如何销毁Nav网格代理

时间:2018-04-17 15:28:19

标签: unity3d nav mesh destroy agent

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

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

1 个答案:

答案 0 :(得分:0)

如果我理解正确,那么当您使用播放器脚本中的光线投射时,您希望销毁敌人对象。这个Raycast片段被无耻地复制并稍微改变了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)
    }

在这种情况下,如果光线投射击中一个对象,您将通过&#34;命中&#34;给予对该命中和相应数据的引用。变量。从那里你可以引用跳回到碰撞对象的gameObject。目前这段代码只会破坏光线投射命中的任何内容。这几乎肯定是不可取的。你必须添加逻辑才能更具判别性。