为什么我的敌人脚本不会跟随玩家?
问题描述:
为什么我的敌人脚本没有跟随玩家?为什么我的敌人脚本不会跟随玩家?
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));
}
}
这个脚本是对敌人的一个组件。敌人不跟随玩家,但仍朝着一个方向前进 - 为什么?
答
你错过了一个方向矢量的概念。
你的代码应该看起来像:
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);
}
}
摆脱更新的方法。这里你不需要它。
然后创建从敌人到玩家的方向矢量,将其归一化,然后将此矢量传递给AddForce
并将其乘以所需的速度。
它看起来并不像使用球员的位置数据。你总是用'new Vector3(1,0,0)'沿x轴施加力,所以敌人会移动而不是朝着玩家的方向移动。 Bonjour JohnD – Serlite
,你有很大的问题。在Update中调用InvokeRepeating是绝对不可能的。你真的需要从许多优秀的Unity教程开始,开始你的爱好者编程之旅。 – Fattie
我编辑了我的代码,但没有任何反应 –