Unity 4

Unity : Terrain에서 Prefabs Tree가 추가되지 않을 때 (충돌박스 있는 나무 심기)

유니티는 터레인 편집 기능을 자체적으로 제공한다. 터레인에서 다음과 같이 트리를 손쉽게 그릴 수 있다. 위와 같이 Edit Trees 를 선택한 뒤, 트리 "모델" 을 찾아 추가해준다. 그 다음엔 그림판처럼 브러쉬로 터레인 위를 슥슥 드래그하면 나무가 마구 자라난다. 그런데 모델에는 충돌박스를 적용할 수가 없으니, 충돌박스를 박은 나무 prefab 을 Terrain Tree 로 심으려고 해보았다. 안된다. 인터넷을 찾아보니 나보다 먼저 문제를 겪어본 사람들이 많이 있었다. 다음 문서에서 솔루션을 찾았다. forum.unity.com/threads/custom-trees-not-painting.537113/ Custom Trees Not Painting Okay, I've looked at a number..

Unity 2020.12.25

Unity : tag 확인 시 == 가 아니라 CompareTag 를 사용하라

유니티 게임 오브젝트의 tag를 체크하여, tag에 따라 다른 동작을 해주려고 할 때 tag를 체크하는 코드를 다음과 같이 작성했더니 경고 메세지가 떴다. // 1. equality operator 로 비교 if (gameObject.tag == "MyTag") { // do something... } 경고 메세지는 다음과 같았다. info UNT0002: Comparing tags using == is inefficient. equality operator 로 비교하는 것은 비효율적이라고 한다. 대안이 있을 것 같아서 조금 찾아보니, 다음과 같이 CompareTag() 로 비교하는 것이 조금 더 효율적이라고 한다. // 2. CompareTag 메소드로 비교 if (gameObject.CompareTa..

Unity 2020.12.14

Unity : 상속받은 User-defined 클래스에 중단점이 안걸릴 때

내가 만든 클래스(AttackState)에 중단점을 걸어보았더니, 다음과 같은 노티 메세지를 띄우며 중단점이 비활성화 되었다. 메세지 : 중단점이 현재 적중되지 않습니다. 해당 위치를 찾을 수 없음. 왜 이런 현상이 발생할까? 혹시 UDT 라면 모두 발생하는 이슈인가 싶어서, 부모 클래스인 State 클래스의 메소드에도 중단점을 걸어보았다. 그랬더니, State 클래스에는 중단점이 잘 걸리는 걸 확인할 수 있었다. 즉, 다음과 같은 상황이었다. 유니티는 아예 "상속받지 않은 클래스" 에 대해서는 중단점이 정상 동작하지만, UnrealEngine.Object 가 아닌 UDT 를 상속받은 자식 클래스에 대해서는 중단점을 지원하지 않는 것으로 보인다. 해결법은, 최상위 클래스인 State 가 UnrealEng..

Unity 2020.12.14

Unity : 충돌 후 이동방향이 삐딱할 때

취미 겸 유니티 프로젝트를 시작했는데 너무도 친절한 엔진이 낯설기만 하다. 충돌 후 목적지까지 이동 시에는 게걸음으로 이동하고, 목적지까지 도달한 후에는 캐릭터가 계속 뱅글뱅글 도는 문제가 있었다. 확인해보니 오브젝트가 충돌한 뒤, rigidbody 의 Angular Velocity 가 초기화되지 않고 계속 슬라이딩 벡터 계산 시의 값으로 남아있는 것을 발견했다. 충돌이 끝났을 때, 위 값을 다시 초기화 해줘야 했다. 충돌이 끝나는 시점은 void OnCollisionExit(Collision collision) 위 콜백함수로 알 수 있었다. 다음과 같이 OnCollisionExit() 콜백함수를 구현하니 정상적으로 동작하는것을 확인할 수 있었다. private void OnCollisionExit(Co..

Unity 2020.12.13