Unity21 TransformDirection 함수 TransformDirection() 함수 : 로컬 좌표를 월드 좌표로 InverseTransformDirection() 함수 : 월드 좌표를 로컬 좌표로 로컬 좌표를 월드 좌표로 변환하기 위해서는 TransformDirection() 함수를 사용하거나 로컬 좌표 사용하되, Translate함수를 사용하면 된다. 2022. 4. 17. 플레이어 점프 개발 노트 고작 플레이어 점프를 하는데 굉장히 많은 시간이 걸렸다. 첫 번째 문제점은 점프는 되는데 반복적인 점프가 발생했다. 따라서 점프 애니메이션 마지막 단계에 이벤트를 넣었다. 점프를 하면 플레이어의 y위치 값이 증가할 것이고 그라운드와는 떨어지게 된다. 그 이후 한번 다시 그라운드와의 충돌이 일어나고 한 번 더 점프를 위한 키 입력이 발생할 경우 Jump 상태로 전환 시켰으며 그렇지 않은 경우는 Idle 상태로 전환되도록 하였다. private void OnTriggerEnter(Collider collider) 함수를 사용하여 플레이어 콜라이더가 그라운드의 태그와 충돌이 일어날 조건을 넣어주어 충돌 발생 시, 다시 Jump상태로 전환될 수 있도록 Idle 상태로의 전환 및 Jump 상태의 Bool값 변환을.. 2022. 3. 29. OnCollsionEnter 함수 작동이 안될 때 A 와 B가 충돌할 때 1. 둘다 Collider 있어야함 2. 둘 중하나 Rigidbody 있어야함 3. 둘 다 isTrigger 체크 해제 나의 경우 땅은 MeshCollider로 되어있다. 이것으로 인해 충돌이 안되는 이유도 있다고 한다. 이럴 경우 y좌표로 인한 문제가 발생한다고는 하나, 정확한 원인은 찾지 못했다. OnCollision 함수는 양쪽 다 isTrigger가 켜져 있지 않을 때, 콜라이더까리 충돌하면 반응하는 함수이다. OnTrigger 함수는 한 쪽 이상이 isTrigger가 켜져 있을 때 반응하고 인자는 Collider를 사용한다. [출처]https://kupaprogramming.tistory.com/20 따라서 OnCollisionEnter함수 대신 OnTriggerEnter.. 2022. 3. 5. 점프 애니메이션 AnyState : 내가 어떤 명령을 내리면 바로 다른 상태로 바꿀 수 있도록 하는 상태 JUMP 상태일 때만 트리거 작동하도록 하면된다. Trigger 관련한 것을 지원하지 않는다. 따라서 animator를 이용해서 SetTrigger()함수를 이용하여 원하는 Trigger가 작동하도록 설정해준다. ex) _ani.SetTrigger("JUMP"); 2022. 3. 5. 유니티 충돌 관련 기억해야 할 부분 충돌해야하는 A와 B가 있다면 1. A OR B 둘 중 하나는 Rigid body가 존재해야한다. => 어디에 존재하는게 좋음? 플레이어 or 땅이라면 플레이어에 존재하는게 좋음, ; 땅이 훨씬 많으므로 2. A와 B 둘 다 Collider가 존재해야한다. 3. 3D Rigid body 라면 3D Collider 와 '만' 충돌한다. 2022. 3. 4. Spawning Pool 몬스터를 죽이고 despawn 시킨 후, 일정 시간이 지나면 몬스터를 재리스폰하도록 하도록 해야한다. 이 몬스터의 리스폰을 관리. 이를 Spawning Pool, 혹은 Monster generator라고 부른다. 용어는 딱히 정해져있지 않음. 역할 1. 특정 범위 내에 몬스터를 생성한 다음에 몬스터를 죽일 때마다 죽은 몬스터의 갯수를 체크, 이를 어느정도 유지 시킴 2. 랜덤하게 유지하기도 함. 이는 원래 서버 쪽에서 담당함. 특정 시간이 흐르면 몬스터 생성 ex) 5초 기다리기 Coroutine 코루틴으로 만들기 void Update() { //현재 monstercount가 keepmonstercount와 일치하는지 아닌지 체크 //더 작으면 while(_monsterCount < _keepMonste.. 2022. 2. 20. TryGetValue 함수_Unity //TryGetValue함수 이용하여 첫번째 인자로 받은 level + 1가 유효한 키 값인지 확인을 먼저하고 out 키워드를 이용해 stat을 반환. 이게 false라면 레벨업x if(Managers.Data.StatDict.TryGetValue(level + 1, out stat) == false) { break; } out 키워드를 사용하면 인라이닝이 되어 별도의 변수를 선언하지 않아도 해당 영역 안에서 out stat을 사용할 수 있다. - 인라인(Inline) 인라인이라는 의미는 코드 라인 자체가 안으로 들어간다는 뜻. 즉, 함수의 내용을 호출을 통해서 실행시키는 것이 아니라, 호출하는 코드 자체가 함수 내용의 코드가 되는 효과가 된다는 점이다 | 인라인 함수의 장점 인라인함수는 #define .. 2022. 2. 20. GameObject Destroy Destroy 했을 때 기존에 참조하고 있는 부분들은 어떻게 처리? Bool 체크를 통하여 확인, 파괴된 객체의 컴포넌트를 가지고 있는 애들도 그 컴포넌트에 접근하는 순간 crash 발생. 따라서 이 부분도 잘 체크해야한다. 오브젝트 풀링을 사용하는 경우, 실제 객체가 삭제되는 것이 아니라 단순히 씬 상에 visible 되지 않는 문제가 발생할 수도 있다. public bool activeSelf { get; } 함수를 사용하여 해당 객체가 null인지와 activeSelf인지 && 를 통해 확인, null이 아니고 동시에 activeSelf이면 IsValid 2021. 12. 23. 애니메이션 특정 Event 추가_실수 몬스터의 피격 모션 이후로 플레이어를 팔로잉하지 않는 문제가 발생. 디버깅 포인트를 찍어본 결과 MonsterController의 OnHitEvent() 함수 내부로 아예 들어가지 않음. 원인은..... 멍청하게도 애초에 OnHitEvent를 걸어준 적이 없었기 때문....... 몬스터의 ATTACK 애니메이션 내부에 Evenet 항목에서 OnHitEvent(함수)라는 이름으로 특정 Event를 추가하여 걸어줌. 해결 완료. 2021. 12. 15. 이전 1 2 3 다음 728x90 반응형