Unity - 敌人 AI 穿墙而过
Unity - Enemy AI walking through walls
我按照 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
}
}
有谁知道如何编辑这段代码让敌人绕过地图中的墙壁到达每个航路点?谢谢
听起来你的墙没有融入你的导航网格。为此,如果您还没有添加导航 window,请单击 Window-> 导航将其添加到您的编辑器中。 Select 您在场景中的墙,并在“对象”选项卡上的“导航”窗格中,选中“静态导航”框。然后按导航窗格右下角的烘焙按钮。如果你的墙有对撞机,你应该看到这样的东西:
蓝色区域表示允许您的导航代理行走的地方。你会注意到你的墙周围的区域不是蓝色的,所以你的特工将无法穿过那里。
我按照 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
}
}
有谁知道如何编辑这段代码让敌人绕过地图中的墙壁到达每个航路点?谢谢
听起来你的墙没有融入你的导航网格。为此,如果您还没有添加导航 window,请单击 Window-> 导航将其添加到您的编辑器中。 Select 您在场景中的墙,并在“对象”选项卡上的“导航”窗格中,选中“静态导航”框。然后按导航窗格右下角的烘焙按钮。如果你的墙有对撞机,你应该看到这样的东西:
蓝色区域表示允许您的导航代理行走的地方。你会注意到你的墙周围的区域不是蓝色的,所以你的特工将无法穿过那里。