【发布时间】:2016-04-24 16:33:03
【问题描述】:
我正在制作一个宇宙飞船飞行游戏,您可以在其中导航它通过洞穴隧道。问题最好在此处的视频中显示:
https://www.youtube.com/watch?v=0K2WdeL7f0A
使用角色控制器和脚本控制移动。脚本只调用controller.Move(<vector>),其中向量可以是任意方向。
角色控制器设置为:
Slope Limit: 180
Step Offset: 0.5
Skin Width: 0.3
Min Move Distance: 0
Center: (0,0,0)
Radius: 3
Height: 0.5
对撞机实际上是一个球体。我还检查了collisionFlags 说它的接触面。我还让对撞机 physicMaterial 的摩擦力为 0,并增加了一点弹性(0.5)。但不管这一切,我都无法阻止角色卡住。
如何防止角色卡在墙上?
【问题讨论】:
-
感谢您提交状态报告。您是否有问题?
-
controller.Move 方法的主体是什么?
-
如果它使用变换函数来移动角色,那么它会覆盖物理引擎的计算。所以使用
rigidbody.AddForce(directionVector)而不是转换函数可能会解决这个问题。 -
@Bahman_Aries:我不使用变换函数,实际上根本没有附加刚体 - 因为它使用 CharacterController。正如我所提到的,我调用 CharacterController::Move()
-
@spencer7593:宇宙飞船卡住不是预期行为 - 墙壁应该只是阻止垂直于其表面的运动,而不是阻止沿它们的运动。