Unity刚体的碰撞碰撞后如何停止

最近自制了一个的角色控制器(沒有重力的角色)时发现角色碰撞到墙壁之后会有一个小小的反弹力导致角色有一个微弱的反弹位移,这样给人一种不好的感觉

导入的模型不能与地面相撞是吧 ┅放置就落下了, 拖入3D和其他模型以后不要急着拖入场景 先点击一下模型inspector栏里的Model选项卡里 Generate Colliders 勾选然后拖入场景就可以了!

目的: 这篇文章的主要目的是为了讓您了解有关于在Unity内如何使用没有刚体的碰撞的碰撞检测
在这里,检查的只是垂直运动方向但可以通过修改脚本,将对象添加到场景檢查其他方向 (或更改cube 的位置

unity就是 3D 的游戏引擎,带有内置物理Nvidia PhysX游戏对象应用物理模拟必须具有刚体的碰撞。它常用于碰撞检测

假设我們只想要碰撞检测模拟物理学,然后只对碰撞检测使用物理引擎可能会降低整体性能

解决办法-1: 使刚体的碰撞运动学和捕获触发器事件。
解决方案-2: 不使用的刚体的碰撞 (可能是最好的解决办法)!!!使用 Raycast 是一个很好的选择
你可以投数以百计的每帧的光线而多降低性能。这是(提供)一種casting来源射线的方向然后确定光线如果投射与任何碰撞器的方法。我们可以使用这个处理碰撞检测通过casting射线在 x 和 y 轴,以得到确认的游戏粅体的周围环境
我们将按照下面给出的步骤:
1、获得游戏对象的方向。
3、从命中结果确定碰撞体
简单的 raycast 代码看起来像这样:

 

在这里,第一個参数是射线的原点第二个参数是射线的方向和第三个参数是射线的长度。Unity允许获取结果

 

例如,让我们使Cube当它与另一个Cube相撞的可以囙去。
1.3个Cube如下图所示。

 
 
 
 

在这里 NoOfRays 和Moving force 是公共变量所以它可以在运行时根据需要改变了。请确保移动速度不超过该Cube在顶部和底部之间的距离

DirectionFactor 成倍增加的运动力和射线的方向,因为它用来决定的方向最初,它设置为向上 (正 y 轴) 方向尽快移动相撞其他Cube的Cube被扭转这个方向决胜局。通过改变方向矢量可以根据要求改变方向。DirectionFactor 仅用于反转方向

参考资料

 

随机推荐