대상 바라보기
Coddy Unity 여정의 Unity 스크립팅 기초 섹션에 포함된 레슨. 85개 중 34번째.
transform.LookAt(point)는 물체의 앞쪽 축인 파란색 z 화살표가 월드의 한 위치를 향하도록 물체를 회전시킵니다. 물체를 회전시키지만 이동시키지는 않습니다. 이 탐조등은 (0, 6, 0)에 있는 탑에 설치되어 있고, (4, 0, 10)에 있는 문을 조준합니다:
void Start()
{
transform.LookAt(new Vector3(4, 0, 10));
}문이 조명보다 낮으므로 탐조등은 회전하면서 아래쪽으로도 기울어집니다. LookAt은 위쪽이든 아래쪽이든 상관없이 지점을 똑바로 조준합니다. 이후 transform.forward는 조명에서 문 쪽을 가리킵니다.
Start()에서 호출하면 LookAt은 한 번 조준합니다. Update()에서 호출하면 매 프레임 다시 조준하므로 물체나 지점이 움직이는 동안 물체는 계속 그 지점을 향합니다. 인수는 항상 위치입니다. LookAt(Vector3.forward)는 물체가 어디에 있든 월드 중심 옆의 지점인 월드 좌표 (0, 0, 1)을 조준합니다.
챌린지
중급로버가 이동하는 방향을 향하게 하세요.
Update()의 주석 아래에if (move != Vector3.zero)를 작성하여, 정지한 로버의 방향이 유지되게 하세요.- 그 안에서
transform.LookAt(transform.position + move);를 호출하세요.
‘플레이’를 눌러 운전해 보세요. 로버의 앞부분이 이동하는 방향을 향해 회전합니다. 그런 다음 ‘확인’을 누르세요.
직접 해보기
using UnityEngine;
public class Rover : MonoBehaviour
{
public float speed = 3f;
void Update()
{
Vector3 move = Vector3.zero;
if (Input.GetKey(KeyCode.RightArrow)) move += Vector3.right;
if (Input.GetKey(KeyCode.LeftArrow)) move += Vector3.left;
if (Input.GetKey(KeyCode.UpArrow)) move += Vector3.forward;
if (Input.GetKey(KeyCode.DownArrow)) move += Vector3.back;
move = move.normalized;
transform.position += move * speed * Time.deltaTime;
// 로버가 이동하는 방향을 바라보도록 회전시키기
}
}
Unity 스크립팅 기초의 모든 레슨
직접 연습해 보세요: Unity 플레이그라운드