我们想让怪物知道自己的攻击目标(当然指的是玩家)然后转向和移动来攻击玩家,因此我们先声明需要用到的变量,首先我们需要一个transform类型(transform组件决定了场景中所有物体的方位,旋转和缩放。每个物体都有一个变换组件)来记录目标的状态,然后定义两个int类型来设置移动速度跟旋转角度。
定义一个私有变量mytransform用来记录当前怪物的方位。然后在Awake函数中将transform赋给mytransform变量这样做的好处是通过建立缓存将他保存到mytransform变量里 这样就不用每次去取transform的值可以让运算变得更快捷。简单说明一下,Awake在MonoBehavior创建后就立刻调用,Start将在MonoBehavior创建后在该帧Update之前,在该Monobehavior.enabled == true的情况下执行。
接着通过Gameobject的FindGameObjectWithTag得到目标对象 将transform赋值给target。
public class EnemyAI : MonoBehaviour { public Transform target; public int movespeed=0; public int rotationspeed=0; private Transform myTransform; void Awake() { myTransform=transform; } // Use this for initialization void Start () { GameObject player=GameObject.FindGameObjectWithTag("Player"); target=player.transform; }
现在已经获得了目标和自身的transform 我们可以试着在他们之间连条线 通过debug的drawline可以很轻松的做到
void Update () { Debug.DrawLine(target.position,myTransform.position,Color.yellow); }
![]()