어린알파카245
- 생활꿀팁생활Q. c# 인터페이스 관련 질문입니다.class PriorityQueue where T : IComparable { List _heap = new List(); public void Push(T data) { _heap.Add(data); int now = _heap.Count - 1; while(now > 0) { int next = (now - 1) / 2; if (heap[now].CompareTo(heap[next]) break; T temp = _heap[now]; heap[now] = heap[next]; _heap[next] = temp; now = next; } }}위 코드에서 heap[now].CompareTo(heap[next])처럼 CompareTo()를 사용하는 부분이 잘 이해가 안 됩니다. where T : IComparable 는 상속받은 게 아니라 T의 속성을 제한한 것이지 않나요? 상속받은 게 아닌데 어떻게 위처럼 사용할 수 있는 건가요? 그리고 만약 상속받은 게 맞다고 하더라도 구현부를 따로 만들어줘야 하는 것 아닌가요? 잘 이해가 안 되네요ㅠ
- 생활꿀팁생활Q. c# enum을 이용해서 스위치문을 랜덤하게 이동하는 방법using System.Collections;using System.Collections.Generic;using UnityEngine;public class PigMove : MonoBehaviour{ enum state { Eat = 0, Move = 1, Run = 2, Dead = 3} Rigidbody pig; Random rand = new Random(); state State = rand.Next(0, 4); void Start() { } void Update() { switch(State) { case state.Eat: break; case state.Move: StartCoroutine(MovePig()); break; case state.Run: break; case state.Dead: break; } } IEnumerator MovePig() { pig = GetComponent(); while (true) { float dir1 = Random.Range(-10f, 10f); float dir2 = Random.Range(-10f, 10f); yield return new WaitForSeconds(5); pig.velocity = new Vector3(dir1, 0.5f, dir2); } } }제가 짠 코드는 위와 같습니다. 이렇게 하면 될 줄 알았는데 안 되네요..ㅠㅠ 유니티로 동물의 행동 패턴을 만들려고 해요. 알려주시면 감사드리겠습니다.
- 생활꿀팁생활Q. c# enum을 이용해서 스위치문을 랜덤하게 이동하는 방법using System.Collections;using System.Collections.Generic;using UnityEngine;public class PigMove : MonoBehaviour{ enum state { Eat = 0, Move = 1, Run = 2, Dead = 3} Rigidbody pig; Random rand = new Random(); state State = rand.Next(0, 4); void Start() { } void Update() { switch(State) { case state.Eat: break; case state.Move: StartCoroutine(MovePig()); break; case state.Run: break; case state.Dead: break; } } IEnumerator MovePig() { pig = GetComponent(); while (true) { float dir1 = Random.Range(-10f, 10f); float dir2 = Random.Range(-10f, 10f); yield return new WaitForSeconds(5); pig.velocity = new Vector3(dir1, 0.5f, dir2); } } }제가 짠 코드는 위와 같습니다. 이렇게 하면 될 줄 알았는데 안 되네요..ㅠㅠ 유니티로 동물의 행동 패턴을 만들려고 해요. 알려주시면 감사드리겠습니다.
- 생활꿀팁생활Q. 비쥬얼 스튜디오 에러 체크가 안 됩니다...유니티에서 실행 중인데 보시면 알겠지만 using 호빵맨 같은 말도 안 되는 걸 입력해도 문제가 검색되지 않음이라고 나와요. 설치도 다시 했고 유니티 external tools에서 스크립트 에디터도 확인했습니다. 원인 아시면 좀 알려주세요ㅠ.ㅠ
- 생활꿀팁생활Q. c# 랜덤하게 switch문의 case를 실행하는 방법c# 랜덤하게 switch문의 case를 실행하는 방법이 있나요? 막연하게는 그냥 랜덤 함수를 생성하면 될 거 같은데.... 막상 해 보려니 잘 안 되네요ㅠ 알려주시면 감사드리겠습니다!
- 생활꿀팁생활Q. 비주얼 스튜디오가 오류 검사를 안 합니다.말 그대로 비주얼 스튜디오(비주얼 스튜디오 코드 아닙니다)가 오류 검사를 안 합니다. 일부러 틀리게 써 봐도 빨간줄이 안 뜨고 빠른 입력창도 안 뜨네요... 뭘 해도 문제가 검색되지 않음이라고 뜹니다. 어떻게 하면 될까요?
- 생활꿀팁생활Q. 특정 높이까지 도달하는 데 필요한 속도 구하는 공식(유니티, C#)rb.velocity = Vector3.up Mathf.Sqrt(-2f Physics.gravity.y * height);위 코드가 제목의 공식을 이용해 적은 거라고 하는데 왜 저런 코드가 나왔는지 잘 모르겠습니다. 무슨 공식인가요?
- 생활꿀팁생활Q. C# if문 질문 있습니다.(유니티 관련)using System.Collections;using System.Collections.Generic;using UnityEngine;public class Rotation : MonoBehaviour{ public float duration = 1f; public float angle = 90f; bool isRotating = false; float remainingAngle; float remainingDuration; void Update() { if (Input.GetKeyDown(KeyCode.Space) && !isRotating) { isRotating = true; remainingAngle = angle; remainingDuration = duration; if (isRotating) { float anglePerFrame = remainingAngle / remainingDuration * Time.deltaTime; if (remainingAngle 위의 코드와 아래 코드의 실행 결과가 왜 다르게 나오는지 모르겠습니다.using System.Collections;using System.Collections.Generic;using UnityEngine;public class Selection0 : MonoBehaviour{ public float angle = 90f; public float duration = 1f; private bool isRotating = false; float remainingAngle; float remainingDuration; void Update() { if (Input.GetKeyDown(KeyCode.Space) && !isRotating) { isRotating = true; remainingAngle = angle; remainingDuration = duration; } if (isRotating) { float anglePerFrame = remainingAngle /remainingDuration * Time.deltaTime; if (remainingAngle
- 생활꿀팁생활Q. 유니티 3d에서 계층구조를 이용해 물체가 회전하면서 이동하는 코드를 짜고 싶습니다.using System.Collections;using System.Collections.Generic;using UnityEngine;public class GameObject : MonoBehaviour{ void Update() { float speed = 10f; float h = Input.GetAxis("Horizontal"); float v = Input.GetAxis("Vertical"); Vector3 dir = new Vector3(h, 0, v); dir = dir.normalized; transform.Translate(speed * Time.deltaTime * dir); }} using System.Collections;using System.Collections.Generic;using UnityEngine;public class rotaion : MonoBehaviour{ void Update() { if(Input.GetKey(KeyCode.W)) transform.Rotate(Vector3.right * 5f); if(Input.GetKey(KeyCode.S)) transform.Rotate(Vector3.left * 5f); } }캐릭터가 먼저 움직일 방향으로 몸을 틀고 그 후에 회전하면서 이동하는 걸 구현하고 싶습니다.계층구조와 위의 코드를 활용해서 짜고 싶은데 방법을 모르겠네요.
- 생활꿀팁생활Q. c# 큰 수 덧셈 코드 짜는 방법Add("190000000000000000000008", "990000000000000000009999") == "1180000000000000000010007"); C#으로 위와 같이 커다란 숫자를 더하는 코드를 짜야 합니다. 문자열을 이용한다는 건 알겠는데 어떻게 해야 할지 감이 안 오네요... 어떻게 해야 할까요?