대각선 이동 속도
Coddy Unity 여정의 Unity 스크립팅 기초 섹션에 포함된 레슨. 85개 중 27번째.
오른쪽 화살표와 위쪽 화살표를 함께 누르면 원시 축 값으로 방향 (1, 0, 1)이 나옵니다. 길이인 .magnitude는 1 + 1의 제곱근으로, 약 1.41입니다. 이 값으로 움직이는 보행자는 정면으로 1단위를 이동하는 시간 동안 대각선으로 1.41단위를 이동하므로 41% 더 빠릅니다.
.normalized는 같은 방향을 가리키고 길이가 정확히 1단위인 벡터의 복사본을 반환합니다. (1, 0, 1)은 약 (0.71, 0, 0.71)이 되고, (0, 0, 5)는 (0, 0, 1)이 됩니다. 속도를 곱하면 방향이 어떻든 그 속도로 이동합니다. 이 벌은 꽃이 멀리 있든 가까이 있든 초당 2단위의 속도로 꽃을 향해 날아갑니다. .normalized가 없다면 꽃이 멀수록 더 빠르게 날아갈 것입니다.
public Vector3 flower = new Vector3(4, 1, 3);
public float speed = 2f;
void Update()
{
Vector3 toFlower = flower - transform.position;
transform.position += toFlower.normalized * speed * Time.deltaTime;
}Vector3.zero.normalized는 방향이 없는 0이므로 (0, 0, 0)으로 유지됩니다. v.normalized는 v를 그대로 둡니다. v.Normalize()는 v 자체를 변경합니다.
챌린지
쉬움워커가 대각선으로 이동할 때도 같은 속도로 움직이게 하세요.
Update()에서Vector3 direction = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical"));를 만드세요.direction.normalized * speed * Time.deltaTime를transform.position에 더하세요.
‘플레이’를 누르고 화살표 키 두 개를 길게 누르세요. 워커는 직선으로 움직일 때보다 더 빠르지 않게 대각선으로 이동합니다. 그런 다음 ‘확인’을 누르세요.
직접 해보기
using UnityEngine;
public class Walker : MonoBehaviour
{
public float speed = 4f;
void Update()
{
// 방향키 또는 WASD: x와 z축을 따라 speed로 이동하며, 대각선으로 이동할 때도 속도는 동일합니다.
}
}
Unity 스크립팅 기초의 모든 레슨
직접 연습해 보세요: Unity 플레이그라운드