我正在制作一个简单易懂的脚本。由于我是编码和新东西的新手,我的代码很可能看起来很糟糕。
好的,这就是事情: 我触发了一个敌人,只有当玩家接近某一点时才会产生。然后敌人必须跟随玩家,不管他在哪里,并且保持一定范围的3个单位。 到了这一步。一切正常。
现在,似乎无法发挥作用的是,我需要我的敌人来“绕轨道”#34;在我的玩家周围,当他处于某个范围内时(3)并且只在那时。 就目前而言,它从一开始就在轨道运行......我错过了什么?
到目前为止我的代码:
public Transform mTarget;
float mSpeed = 10.0f;
const float EPSILON = 3.0f;
public float speed;
void Start()
{
OrbitAround ();
}
void Update() {
transform.LookAt (mTarget.position);
if ((transform.position - mTarget.position).magnitude > EPSILON)
transform.Translate (0.0f, 0.0f, mSpeed * Time.deltaTime);
}
void OrbitAround() {
if(Vector3.Distance(transform.position, mTarget.transform.position) < 3) {
transform.RotateAround (mTarget.transform.position, Vector3.up, speed * Time.deltaTime);
}
}
非常感谢,如果有人能帮助我的话。
干杯,
答案 0 :(得分:0)
正如@Zibelas所说,Start函数只有一次。
Unity文档说明:
在第一次调用任何Update方法之前启用脚本时,在帧上调用Start。
所以尝试在Update函数中调用OrbitAround(),它应该可以工作
答案 1 :(得分:0)
嗯,并没有真正解决这个问题,但我找到了解决问题的方法。
当玩家再次离开时,我刚刚启动脚本围绕目标进行轨道运行,当敌人接近它并禁用它时。
void Update (){
if (Vector3.Distance (transform.position, mTarget.transform.position) < 15) {
script.enabled = true;
}
if(Vector2.Distance(transform.position, mTarget.transform.position) >15) {
script.enabled = false;
}
仍然,感谢评论和信息,伙计们。