Unity3d 防止对撞机在地形中发生故障
我正在使用Unity 2019.2.1f1中的地形和带有网格碰撞器的洞穴自定义网格 我的角色有一个比洞穴入口大得多的太空舱对撞机,应该不能进入。但由于两台对撞机都是圆的,他可以在山洞里生效,在地形中闪烁对撞机 我认为它的速度不是太快,我正在用Unity3d 防止对撞机在地形中发生故障,unity3d,collision-detection,game-development,Unity3d,Collision Detection,Game Development,我正在使用Unity 2019.2.1f1中的地形和带有网格碰撞器的洞穴自定义网格 我的角色有一个比洞穴入口大得多的太空舱对撞机,应该不能进入。但由于两台对撞机都是圆的,他可以在山洞里生效,在地形中闪烁对撞机 我认为它的速度不是太快,我正在用FixedUpdate()中的rb.MovePosition()移动角色,并且我将其刚体碰撞检测设置为连续推测(尝试了所有“连续”模式) 在下面的动画中,可以看到角色周围的洞穴网格和胶囊碰撞器 我怎样才能防止这种情况发生?我怎么能对Unity说:“我希望对撞
FixedUpdate()
中的rb.MovePosition()
移动角色,并且我将其刚体碰撞检测设置为连续推测(尝试了所有“连续”模式)
在下面的动画中,可以看到角色周围的洞穴网格和胶囊碰撞器
我怎样才能防止这种情况发生?我怎么能对Unity说:“我希望对撞机坚如磐石,而不是棉花糖”
联合体中的对撞机坚如磐石。它们无法进行任何软物理,它们相互扭曲的唯一时刻就是你强迫它们这样做的时候
在这里,您将通过强制将刚体位置设置为一个不可能的位置。尽管没有足够的空间,但游戏会尽最大努力让你的身体保持僵硬
你可以
- 只使用力和速度。您可以简单地将速度设置为您选择的方向,并在停止移动时将其设置为0,或者使用
,这基本上是相同的AddForce
- 继续使用
,但使用MovePosition
或SphereCast
检查是否有足够的空间先移动CapsuleCast
- 只使用力和速度。您可以简单地将速度设置为您选择的方向,并在停止移动时将其设置为0,或者使用
,这基本上是相同的AddForce
- 继续使用
,但使用MovePosition
或SphereCast
检查是否有足够的空间先移动CapsuleCast
- 联合体中的对撞机坚如磐石。它们无法进行任何软物理,它们相互扭曲的唯一时刻就是你强迫它们这样做的时候
在这里,您将通过强制将刚体位置设置为一个不可能的位置。尽管没有足够的空间,但游戏会尽最大努力让你的身体保持僵硬
你可以
rb.AddForce
而不是rb.MovePosition
谢谢,我想使用MovePosition
但是由于这个问题,我想我会混合使用AddForce
和RootMotion(感谢OnAnimatorMove()
回调)。尝试使用rb.AddForce
而不是rb.MovePosition
谢谢,我想使用MovePosition
但是由于这个问题,我想我会混合使用AddForce
和RootMotion(感谢OnAnimatorMove()
回调)。好的,谢谢你的解释,我想使用MovePosition()
做得很好,而不是直接改变玩家的位置。因为游戏玩家说“它创造了一个平滑的过渡”并且“不传送”玩家。它与AddForce()
配合得很好,现在我只需要处理当玩家改变方向时取消先前的水平速度,这样他就不会“在冰上滑动”。移动位置与改变位置相比确实有一些优势,因为它允许相机的帧插值,并将发送碰撞事件,但这不是您想要的。好的,谢谢您的解释,我想使用MovePosition()
做得很好,而不是直接更改播放器的位置。因为游戏玩家说“它创造了一个平滑的过渡”并且“不传送”玩家。它与AddForce()
配合得很好,现在我只需要处理当玩家改变方向时取消先前的水平速度,这样他就不会“在冰上滑动”。移动位置与改变位置相比确实有一些优势,因为它允许相机的帧插值,并将发送冲突事件,但这不是您想要的。