【问题标题】:Unity - Enemy AI walking through wallsUnity - 穿过墙壁的敌人 AI
【发布时间】:2016-10-12 11:31:53
【问题描述】:

我按照 YouTube 上的 Unity 视频为您的 AI 创建了一个状态机,但是,当敌人巡逻时,他们会穿墙而过。我尝试将 RigidBody 组件添加到敌人身上,但这完全干扰了他们前往每个航点的运动。

这是使 AI 移动到每个航点的代码

private void Look()
{
    RaycastHit hit;
    if (Physics.Raycast(enemy.eyes.transform.position, enemy.eyes.transform.forward, out hit, enemy.sightRange) && hit.collider.CompareTag("Player"))
    {
        enemy.chaseTarget = hit.transform;
        InChaseState();
    }

}

void Patrol()
{
    enemy.meshRendererFlag.material.color = Color.green; //Test to see what state the enemy is in
    enemy.navMeshAgent.destination = enemy.waypoints[nextWaypoint].position; //Select the current waypoint
    enemy.navMeshAgent.Resume(); //Start walking again

    if (enemy.navMeshAgent.remainingDistance <= enemy.navMeshAgent.stoppingDistance && !enemy.navMeshAgent.pathPending) //Checking to see if we've reached our destination
    {
        nextWaypoint = (nextWaypoint + 1) % enemy.waypoints.Length; //Go to next waypoint and should loop as expected
    }
}

有人知道如何编辑此代码以使敌人绕着地图中的墙壁走动以到达每个航路点吗?谢谢。

【问题讨论】:

  • 墙壁可能不是从导航网格中雕刻出来的?!墙壁需要一个对撞机才能让算法这样做。它们还需要是导航静态的(可以在静态复选框下拉菜单中设置)或 NavMesh 障碍物,当我没记错时这是一个组件。

标签: unity3d artificial-intelligence


【解决方案1】:

听起来你的墙没有融入你的导航网格。为此,如果您还没有这样做,请通过单击 Window->Navigation 将导航窗口添加到您的编辑器。在场景中选择您的墙,然后在“对象”选项卡的“导航”窗格中,选中“静态导航”框。然后按导航窗格右下角的烘焙按钮。如果你的墙有一个碰撞器,你应该会看到这样的东西:

蓝色区域表示您的导航代理可以行走的地方。您会注意到墙壁周围的区域不是蓝色的,因此您的代理将无法穿过那里。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多