为什么我的敌人脚本不跟随播放器?
using UnityEngine;
using System.Collections;
public class suivre : MonoBehaviour {
GameObject perso;
float persoposx;
float persoposy;
float persoposz;
// Use this for initialization
void Start () {
perso = GameObject.FindGameObjectWithTag ("Player");
InvokeRepeating ("follower", 1, 1);
}
// Update is called once per frame
void Update () {
persoposx = perso.transform.position.x;
persoposy = perso.transform.position.y;
persoposz = perso.transform.position.z;
}
void follower() {
GetComponent<Rigidbody>().AddForce(new Vector3(persoposx, persoposy, persoposz));
}
}
这个脚本是敌人的一个组成部分。敌人不跟随玩家,但仍朝着方向前进 - 为什么?
答案 0 :(得分:1)
你缺少一个方向向量的概念。
您的代码应如下所示:
using UnityEngine;
using System.Collections;
public class suivre : MonoBehaviour
{
public float speed = 3f;
GameObject perso;
void Start ()
{
perso = GameObject.FindGameObjectWithTag ("Player");
InvokeRepeating ("follower", 1, 1);
}
void follower()
{
Vector3 directionToPlayer = perso.transform.position - this.transform.position;
directionToPlayer.Normalize ();
GetComponent<Rigidbody>().AddForce(directionToPlayer * speed);
}
}
摆脱Update方法。你在这里不需要它。
然后创建从敌人到玩家的方向向量,对其进行标准化,然后将此向量传递给AddForce
并将其乘以您想要的速度。