【问题标题】:How can I destroy the Nav mesh agent如何销毁 Nav 网格代理
【发布时间】:2018-04-17 15:28:19
【问题描述】:

我正在创建一个 fps 游戏,玩家必须通过射击来杀死敌人。 我正在使用射线投射来击中敌人。我想在光线投射击中敌人时摧毁导航网格代理。我有一个附加到播放器(不是导航网格代理)的播放器脚本,它会抛出一个光线投射。

如何从播放器脚本中销毁 AI 代理?

【问题讨论】:

    标签: unity3d nav mesh destroy agent


    【解决方案1】:

    如果我的理解正确,您希望在被播放器脚本中的光线投射击中时摧毁敌方对象。这个Raycast sn-p是从https://docs.unity3d.com/ScriptReference/Physics.Raycast.html无耻抄袭和轻微改动的

        // Bit shift the index of the layer (8) to get a bit mask
        int layerMask = 1 << 8;
    
        // This would cast rays only against colliders in layer 8.
        // But instead we want to collide against everything except layer 8. The ~ operator does this, it inverts a bitmask.
        layerMask = ~layerMask;
    
        RaycastHit hit;
        // Does the ray intersect any objects excluding the player layer
        if (Physics.Raycast(transform.position, transform.TransformDirection(Vector3.forward), out hit, Mathf.Infinity, layerMask))
        {
            Destroy(hit.transform.gameObject)
        }
    

    在这种情况下,如果光线投射击中一个对象,您将通过“hit”变量获得对该击中和相应数据的引用。从那里您可以参考跳转回碰撞对象的游戏对象。目前,此代码将简单地破坏光线投射命中的任何内容。这几乎肯定是不可取的。您必须添加逻辑才能更具辨别力。

    【讨论】:

      猜你喜欢
      • 2013-01-11
      • 1970-01-01
      • 2014-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-15
      • 1970-01-01
      相关资源
      最近更新 更多