【问题标题】:How to make enemy circle player when in range?如何在范围内使敌人的圈子玩家?
【发布时间】:2018-02-24 20:35:33
【问题描述】:

我正在编写一个相当简单的脚本。由于我是编码和东西的新手,我的代码很可能看起来很糟糕。

好的,事情是这样的: 我触发了一个敌人,并且仅在玩家接近某个点时才产卵。然后敌人要跟着玩家,不管他在哪里,保持一定的3个单位范围。 至此。一切正常。

现在,似乎不起作用的是,我需要我的敌人在我的玩家周围“绕行”,当他在一定范围内 (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);
    }       
}

非常感谢提前,如果有人可以帮助我。

干杯,

【问题讨论】:

  • 如果Update 使用mTarget 作为目的地,为什么OrbitAround 使用Player.transform?另外,你在哪里打电话OrbitAround?最后,跟踪将在EPSILON, 3 处停止,但您的轨道代码会检查小于 2 的距离。
  • 我想我可以删除“播放器”并使用 mTarget .transform?编辑了Start(),猜猜应该是在那里调用的吧?
  • “猜猜”?你已经写了代码,你应该知道每一行是做什么的,而不是“猜测”它做什么......
  • 嗯,是的,已删除。 mTarget 和 Player 实际上是一样的。所以那里没有任何意义。
  • 这行不通;看看docs.unity3d.com/ScriptReference/MonoBehaviour.Start.html (基本上 start 被称为 ONCE 而不是之后)

标签: c# unity3d


【解决方案1】:

正如@Zibelas 所说,Start 函数只有一次。

Unity 文档指出:

在第一次调用任何 Update 方法之前启用脚本时,在框架上调用 Start。

所以尝试在 Update 函数中调用 OrbitAround(),它应该可以工作

【讨论】:

    【解决方案2】:

    嗯,并没有真正解决这个问题,但我找到了解决它的方法。

    我刚刚启用脚本绕目标运行,当敌人靠近它并禁用它,当玩家再次离开时。

    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;
            }
    

    仍然,感谢 cmets 和信息,伙计们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多