728x90
728x90
OnDrawGizmos() 함수를 사용하여 시각적으로 범위 체크하기 public float attackRange = 2; private void Move() { Vector3 dir = target.position - transform.position; float distance = dir.magnitude; dir.Normalize(); transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.LookRotation(dir), 5 * Time.deltaTime); cc.SimpleMove(dir * speed); // 공격 범위에 타겟이 들어오면 상태를 공격으로 전환하고 싶다 if(distance < attackRange) { m_Stat..
타겟 쪽으로 회전 및 이동 Enemy 오브젝트가 Player 오브젝트를 바라보도록 회전하고, 큐브 위에 올라가 있는 Player를 향해 자연스럽게 이동 및 회전할 수 있는 코드를 구현하였다. private void Move() { // 타겟 쪽으로 이동 Vector3 dir = target.position - transform.position; dir.Normalize(); dir.y = 0; // 타겟 쪽으로 회전 // transform.LookAt(target); // transform.forward = Vector3.Lerp(transform.forward, dir, 5 * Time.deltaTime); transform.rotation = Quaternion.Lerp(transform.rotati..
Layer와 Tag 비교 게임 오브젝트를 비교하는 방법은 Layer과 Tag 설정이 있다. Layer는 총 32개로 정의되어 있다. 32라는 숫자는 int형 즉, 비트형을 가져온다. 여기서 비트 연산으로 layer 처리를 해주는 개념으로 이해하면 된다. 비트형이기 때문에 0과 1로 입력/출력 값을 결정해준다. Tag와 Layer은 다음과 같이 사용할 수 있다. 전부 다 같은 동작이 실행되고 각 코드마다 약간의 성능차이는 있다. if(collision.gameObject.CompareTag("Player")) // 전부 다 같은 개념 if(collision.gameObject.name.Contains("Player")) if(collision,gameObject.tag == "Player") if(coll..
https://www.youtube.com/watch?v=sU4tT15I1HI 레벨 디자인에 대한 기획 및 제작 프로세스는 다음과 같다. 유니티에서는 2021년 버전부터 프로빌더(ProBuilder)가 들어가 있기 때문에 터레인 제작에 활용할 수 있다. 기획 - > 동선(White Boxing) -> 애셋 교체 - > 디테일 White Boxing은 기본적인 박스 만으로 레벨에 필요한 요소를 간략하게 구성하는 것이다. 박스를 배치하므로서 캐릭터 동선 체크도 함께 수행한다. 조명 배치도 유저의 동선 유도에 필요하기 때문에 레벨 디자인의 중요한 요소이다.
유니티 조이스틱 시스템 제작 방법 유니티로 모바일 게임을 제작할 때 조이스틱 시스템을 가져와 플레이어의 움직임을 구현하곤 한다. 보통은 애셋을 가져다 쓰기 때문에 조이스틱 제작 방법이 어렵다고 생각하나, 사실은 기본적인 이동 공식과 Vector3 자료형 값 만으로 구현할 수 있다. 조이스틱의 원리 역시 방향 설정(방향 벡터)과 관련이 있기 때문이다. 조이스틱 제작에 대한 기본적인 아이디어는 다음과 같다. 1. 조이스틱을 만들고 싶다. - UI가 마우스를 따라서 이동하도록 처리 - 조이스틱이 가리키는 방향을 찾고 싶다 - 2. 플레이어의 방향을 찾는다. 외부 클래스를 static으로 선언해 플레이어 이동에 가져오는 방법 // 플레이어 이동 스크립트 float h = Joystick.GetAxis("Hori..
GameManager 게임매니저 클래스 https://docs.unity3d.com/Packages/com.unity.testtools.codecoverage@0.3/api/Global%20Namespace.GameManager.html Class GameManager | Code Coverage | 0.3.1-preview docs.unity3d.com 유니티에서는 전체 게임의 실행을 담당하는 GameManager 클래스를 지원하고 있다. GameManager 클래스와 관련해서 몇가지 공부했던 내용을 정리하려고 한다. 전역 변수 선언 과정에서 다음과 같은 내용을 확인할 수 있다. [HideInInspector]는 어트리뷰트 종류 중 하나로, 한 칸 바로 밑에 있는 변수를 숨기는 역할을 한다. 마찬가지로..