이전편
2024.03.28 - [Unity/2D] - [Unity/2D] 간단한 애니메이션 만들기 - Animator, Animation
transform.position.x += 1; // 에러
그렇다면 x방향(오른쪽)으로 캐릭터를 움직이기 위해서는 어떻게 해야 할까요?
transform.position += new Vector3(1f, 0, 0);
위와 같이 작성해주면 됩니다.
transform.position은 값을 대입할 수 있습니다.
transform.position에 마우스를 갖다대면 'Vector3'라는 타입인 것을 알 수 있습니다.
그래서 우리도 그 형식에 맞춰서 값을 대입해줘야합니다.
new Vector3(1f, 0, 0); 에서 1f, 0, 0 값은 순서대로 x, y, z 값입니다.
이와 같은 의미인 코드는 아래와 같습니다.
transform.position += Vector3.right; // Vector3.right == new Vector3(1f, 0, 0);
Vector3.right == new Vector3(1f, 0, 0);
x == right, 값은 1f 입니다.
다만, 문제가 있습니다.
위 코드대로 실행시켜보면 캐릭터 갑자기 확 이동하는 것을 볼 수 있습니다.
컴퓨터 사양에 따라서 어떤 사람은 더 빠르게 확 이동 할 수도 있습니다.
그래서 어떤 기기든 같은 속도로 이동할 수 있도록 설정해주어야 합니다.
void Start()
{
Application.targetFrameRate = 60; // 어떤 기기든지 1초에 60번만 계산될 수 있게끔 설정
}
Application.targetFrameRate 를 사용하면 어떤 기기든지 1초에 설정된 프레임 값만큼 계산될 수 있도록 설정할 수 있습니다.
또한 캐릭터가 x방향으로 프레임당 1f씩이나 이동하니까 너무 빠릅니다.
그래서 값을 조정해주어야 합니다.
void Update()
{
transform.position += Vector3.right * 0.05f; // Vector3.right == new Vector3(1f, 0, 0);
// 1 * 0.05, 0 * 0.05, 0 * 0.05 == 0.05, 0, 0
}
Vector3.right * 0.05f 를 해주면
(1f, 0, 0)에서 0.05f를 각각 곱해주어 값은 결국 1 * 0.05, 0 * 0.05, 0 * 0.05 == 0.05, 0, 0가 됩니다.
플레이 버튼을 눌러보면 20배 정도 느려진 것을 느끼실 수 있습니다.
Tip
/ 연산을 하는 것 보다
* 연산을 하는게 빠릅니다.
가능하면 *를 이용해 주세요.
예를 들면 아래 계산의 답은 둘 다 5지만 아래있는 계산이 더 빠르게 처리됩니다.
x = 10 / 2
x = 10 * 0.5f
다음편
2024.03.28 - [Unity/2D] - [Unity/2D] 캐릭터 방향 전환하기 - 플립(Flip)
모바일 화면 크기 설정이 궁금하다면?
'스파르타 게임개발종합반(Unity) > 사전캠프 공부 기록' 카테고리의 다른 글
[Unity/2D] 마우스 왼쪽 버튼이 눌러졌을 때 캐릭터 방향 전환하기 - Mouse Input (0) | 2024.03.28 |
---|---|
[Unity/2D] 캐릭터 방향 전환하기 - 플립(Flip) (0) | 2024.03.28 |
[Unity/2D] 간단한 애니메이션 만들기 - Animator, Animation (0) | 2024.03.28 |
[Unity/2D] 2D 오브젝트간 우선순위 - Order in Layer (0) | 2024.03.28 |
[Unity] 모바일 크기 설정 / 디스플레이 설정 (0) | 2024.03.28 |
댓글