看向物体
本课属于 Coddy Unity 学习旅程的“Unity 脚本基础”单元。第 34 课,共 85 课。
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 在线编辑器