0

我没有发现任何有用的东西可以在 Unity 中为 NavMesh 实现自定义移动和旋转。我不想使用Nav Mesh Agent组件的转向部分,但我想使用 NavMesh 避障和寻路。

4

1 回答 1

0

如果我理解你的问题是正确的,你想用 NavMesh 来限制你的角色移动,而不是使用对撞机。

例如,我在山上有一个机器人,我用箭头按钮控制它,我不希望它从悬崖上掉下来。

就我而言,我的角色有这个Character Controller组件。我所要做的就是将组件与组件一起Nav Mesh Agent添加到我的角色中。Character Controller

重要的!你的角色站立的地面应该仍然有Collider任何类型的,比如 a Box Collider,因为当我禁用连接到地面的 Box Collider 时,我的角色无法移动,但你不需要将碰撞器附加到你的障碍物上。制作它们Navigation Static并烘烤就NavMesh可以了。

我没有实现任何关于Nav Mesh Agent组件的额外代码。我的 RobotController.cs 做得很好。

类似的Steering部分下的变量,&不会覆盖我在 RobotController 脚本中实现的变量。Nav Mesh AgentSpeedAngular SpeedAcceleration

概括

我的角色有以下组成部分:

  • Character Controller
  • RobotController.cs
  • Nav Mesh Agent

按照这个顺序,RobotController.cs 就像这样简单:

if (Input.GetKey (KeyCode.UpArrow)) {
  if(speed < maxVelocity)
    speed += acceleration * Time.fixedDeltaTime;
  else
    speed = maxVelocity; 
}

velocity.x = (transform.forward * speed).x;
velocity.z = (transform.forward * speed).z;
于 2018-08-26T12:15:49.483 回答