Unity3D教程:赛车漂移算法

漂移的解决方案。

方案1.整个赛车干脆都用translate做坐标移动,这个就是无视wheelcollider物理引擎的做法,新手适用,简单方便,但之后的开发上会有很多问题需要解决(如果你想解决这些问题的话)。

方案2.用wheelcollider的悬挂设置和摩擦力设置做。这个应该是最标准的,但是我一直没研究出来他的Forward Friction和Sideways Friction怎么设置,并且这些设置有什么效果。当然这个做法的移动是使用wheelcollider的motorTorque做移动的。

方案3.轮子一样还用wheelCollider,但汽车移动的动力不使用轮子的motorTorque,而是在汽车的rigidbody上施加Force来传动(官方的例子是这样的)。用Force有个好处,你可以在拐弯的时候做受力分析,计算出最后侧滑的合力方向和大小,实时计算赛车动力方向和侧滑判定。这个唯一的问题就是汽车稳定性问题,在高速运动的汽车中很难保证他的稳定,自己开发ASBS系统也不太可能吧。Unity3D教程手册

方案4.用wheelcollider和translate混合处理。首先一点重要的,所有汽车移动,转弯都必须使用wheelcollider提供的函数,用wheelcollider方法可以保证车子正常运动,但不会漂移(要么过快车速侧翻,要么就直接转弯过去了),判断漂移只需要判断玩家点击手刹的时候,计算车子拉手刹一瞬间的转弯角和惯性方向,使用transform.translate来实现甩尾,有效规避掉不必要的摩擦判断和物理判断。漂移大致原理如下图:

 由于手刹后前后轮抱死产生的摩擦和离心力的作用改变了整辆车合力的方向,所以导致汽车运动方向的改变,产生漂移。那我们假设他拉得不是手刹,而只是普通的制动闸,只有制动减速效果,所以先用wheelcollider做正常的拐弯减速运动,然后单独写一个traslate按预计漂移方向做物体移动,并判断当手刹按钮按下后再进行强行物体移动加以模拟减速移动来产生漂移的摩擦衰减效果(transform的坐标移动是不受物理引擎影响的,所以写起来就很简单。)

 这样最后综合起来的效果就能产生漂移效果的最初框架了。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小姑娘很大

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值