이동하는 발판 제작
이동하는 발판 제작:
발판이 되는 오브젝트에 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;
}
}
}
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 |