我正在写一个可能很简单的脚本。因为我是个编程新手,所以很有可能我的代码看起来很糟糕。
好的,事情是这样的:我有一个敌人被触发,只有当玩家接近某个点时才会产卵。然后敌人必须跟随玩家,不管他在哪里,并保持一定的范围3个单位。到这一点。一切都很好。
现在,似乎行不通的是,我需要我的敌人在我的玩家周围“绕圈”,当他在一定的范围内(3),并且只有在那时。现在,它正从我错过的start...what轨道上运行??
到目前为止,这是我的代码:
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);
}
}非常感谢,如果有人能帮我的话。
干杯,
发布于 2018-02-23 10:57:29
正如@Zibelas所说,Start函数只有一次。
Unity文档说明:
在第一次调用任何
方法之前启用脚本时,会在帧上调用Update Start。
因此,尝试将对OrbitAround()的调用放在更新函数中,它应该可以工作
发布于 2018-02-24 20:35:34
好吧,并没有真正解决这个问题,但我找到了一种方法来解决它。
我只是启用了脚本来环绕目标,当敌人接近它时,当玩家再次离开时,禁用它。
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;
}尽管如此,还是要感谢你们的评论和信息。
https://stackoverflow.com/questions/48929116
复制相似问题