본문 바로가기
TIL

01.03 (TIL-Unity)

by 오랑이귀엽다 2024. 1. 3.

이동하는 발판 제작

이동하는 발판 제작:

발판이 되는 오브젝트에 Rigidbody2D 컴포넌트를 추가하고, 특정 경로를 따라 이동하도록 스크립트를 작성

 

사용한코드

더보기
using UnityEngine;

public class MovingPlatform : MonoBehaviour
{
    public Transform[] points; // 이동할 위치들을 저장하는 배열. Unity 에디터에서 설정 가능
    public float speed = 2f;   // 이동 속도. Unity 에디터에서 조절 가능
    private int currentPointIndex = 0; // 현재 목표 위치의 인덱스를 저장하는 변수

    void Update()
    {
        // 매 프레임마다 플랫폼을 현재 위치에서 다음 목표 위치(points[currentPointIndex])로 이동
        // Vector2.MoveTowards 함수는 현재 위치에서 목표 위치까지 지정된 속도로 움직이게 해주는 함수
        // speed * Time.deltaTime을 사용하여 프레임 속도에 관계없이 일정한 속도로 이동
        transform.position = Vector2.MoveTowards(transform.position, points[currentPointIndex].position, speed * Time.deltaTime);

        // Vector2.Distance 함수를 사용하여 현재 위치와 목표 위치 사이의 거리를 계산
        // 이 거리가 0.1f 미만이 되면, 즉 플랫폼이 목표 위치에 매우 가까워지면 다음 위치로 목표를 변경
        if (Vector2.Distance(transform.position, points[currentPointIndex].position) < 0.1f)
        {
            // currentPointIndex를 증가시켜 다음 위치로 변경
            // % 연산자는 points 배열의 길이를 넘어가지 않도록 하기 위해 사용
            // 이를 통해 배열의 마지막 요소에 도달한 후에는 다시 첫 번째 요소로 돌아감
            currentPointIndex = (currentPointIndex + 1) % points.Length;
        }
    }
}

목표지점 (Point)는 빈오브젝트를 만들고 그냥 위치만 지정해주면된다. 

주의사항으로는 목표지점을 플랫폼의 하위로 넣어버리면 한방향으로 무한이 이동하는 현상이 발생.

'TIL' 카테고리의 다른 글

01.05 (TIL-Unity)  (0) 2024.01.05
01.04 (TIL-Unity)  (0) 2024.01.04
01.02 (TIL-Unity)  (1) 2024.01.02
12.29 (TIL-Unity3D)  (0) 2024.01.02
12.28 (TIL-Unity3D)  (1) 2023.12.28