안녕하세요 UnityBeginner입니다.
이번 글에선 오브젝트의 이동경로를 설정하는 한 방법에 대해 알아보겠습니다.
이번 글에선 오브젝트의 이동경로를 설정하는 한 방법에 대해 알아보겠습니다.
씬뷰
먼저 큐브 오브젝트를 사용하여 바닥과, 플레이어를 생성합니다.
※ 보라색 다이아몬드는 Gizmo를 활용한 마커입니다.
※ 보라색 다이아몬드는 Gizmo를 활용한 마커입니다.
하이어라키 오브젝트 계층구조
큐브오브젝트를 활용하여 바닥지형을 생성하고
빈 오브젝트를 이용하여 오브젝트가 이동할 좌표를 생성합니다.
빈 오브젝트를 이용하여 오브젝트가 이동할 좌표를 생성합니다.
기즈모 마커
인스펙터 상단에 위치한 기즈모 아이콘을 이용하여 게임뷰나 씬뷰에
형태가 없는 오브젝트에 마커를 표시할 수 있습니다.
형태가 없는 오브젝트에 마커를 표시할 수 있습니다.
기즈모 아이콘 옵션
옵션을 활용하여 사이즈를 조절하거나 다른 타입으로 확인이 가능합니다.
스크립트 waypoint
1 | public Transform[] wayIndex;
|
적의 이동경로를 포함 할 Transform 배열 코드입니다.
Waypoint transform 추가
생성해 두었던 이동좌표가 기록되어있는 빈오브젝트들을 배열에 추가합니다.
스크립트 Enemy
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | private int idx = 0; private float speed = 8f; private Transform target; private Waypoint waypoint; private void Start() { waypoint = GameObject.FindObjectOfType<Waypoint>(); target = waypoint.wayIndex[idx]; } void Update() { Vector3 direction = target.position - transform.position; // 방향 구하기 transform.Translate(direction.normalized * speed * Time.deltaTime, Space.World); // 오브젝트 이동 if(Vector3.Distance(transform.position, target.position) <= 0.2f) { // 목적지 도착지 포인트 변경 Nextpoint(); } } public void Nextpoint() { if (idx >= waypoint.wayIndex.Length - 1) Destroy(gameObject); else { idx++; target = waypoint.wayIndex[idx]; } } |
Wapoint의 배열에 포함되어있는 좌표값을 가져와 이동하며
매 지점에 도착할 때마다 다음 좌표를 가져와 이동하는 코드입니다.
매 지점에 도착할 때마다 다음 좌표를 가져와 이동하는 코드입니다.
결과화면
해당 방식을 응용하여 디펜스류의 게임에 활용하여
적들의 움직임을 제어가 가능합니다.
적들의 움직임을 제어가 가능합니다.
댓글
댓글 쓰기