我发现没有什么有用的东西可以在Unity中为NavMesh实现自定义移动和旋转。我不想使用Nav Mesh Agent
组件的导向部分,但是我想使用NavMesh避障和寻路。
答案 0 :(得分:0)
如果我正确理解了您的问题,则希望使用NavMesh而不是使用对撞机来限制角色移动。
例如,我在山上有一个机器人,我可以使用箭头按钮控制它,但我不希望它从悬崖上掉下来。
就我而言,我的角色具有Character Controller
组件。我要做的就是将Nav Mesh Agent
组件添加到我的角色{strong>沿 Character Controller
组件中。
重要!!您的角色站立的地面上仍然应该有任何类型的Collider
,例如Box Collider
,因为当我禁用附着在地面上的Box Collider时,我的角色无法移动,但您无需将对撞机附加到障碍物上。使它们Navigation Static
并烘烤NavMesh
可以解决问题。
我没有实现有关Nav Mesh Agent
组件的任何额外代码。我的RobotController.cs很好。
Nav Mesh Agent
的 Steering 部分下的变量(如Speed
,Angular Speed
和Acceleration
)不会覆盖我在我的变量上实现的变量RobotController脚本。
摘要
我的角色有以下组成部分:
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;