【Unity3D赛车游戏优化篇】【九】Unity中如何让汽车丝滑漂移?

编程入门 行业动态 更新时间:2024-10-11 21:21:28

【Unity3D<a href=https://www.elefans.com/category/jswz/34/1639921.html style=赛车游戏优化篇】【九】Unity中如何让汽车丝滑漂移?"/>

【Unity3D赛车游戏优化篇】【九】Unity中如何让汽车丝滑漂移?


👨‍💻个人主页:@元宇宙-秩沅

👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!

👨‍💻 本文由 秩沅 原创

👨‍💻 收录于专栏:Unity游戏demo

🅰️Unity3D赛车游戏



文章目录

    • 🅰️Unity3D赛车游戏
    • 前言
    • 🎶(==A==)系统的优化——漂移
        • 😶‍🌫️效果对比:
        • 😶‍🌫️漂移的实质:
    • 🎶(==B==)系统的优化——转向 ,阻力 和 制动
        • 😶‍🌫️阻力优化
        • 😶‍🌫️转向优化
        • 😶‍🌫️制动优化
    • 🅰️


前言


😶‍🌫️版本: Unity2021
😶‍🌫️适合人群:Unity初学者
😶‍🌫️学习目标:3D赛车游戏的基础制作
😶‍🌫️技能掌握:



🎶(A系统的优化——漂移


  • 插件工具
😶‍🌫️效果对比:

  • 加上漂移代码
  • 未加漂移代码、
😶‍🌫️漂移的实质:

拦截后轮运动,发生滑动,我们向前行驶时车轮的摩擦力更大,而侧向行驶时车轮的摩擦力则非常小

  • 相关参数
  • 🥶重要参数官方手册解释

描述轮胎的摩擦属性_WheelFrictionCurve

关节弹簧_JointSpring

轮式碰撞机悬架弹簧_WheelCollider.suspensionSpring

  • 关键代码:
    //漂移相关public void Drift(){//漂移平滑因素drfitSmoothFactor = 0.7f * Time.deltaTime;if (InputManager.InputManagerment.handbanl)//如果按下空格刹车{//给轮胎侧向和前滑摩擦属性初始化赋值sidewaysFriction = wheels[0].sidewaysFriction;forwardFriction = wheels[0].forwardFriction;float velocity = 0;//侧滑摩擦特性的极值 =  侧滑渐进点打滑的力 = 前滑摩擦特性的极值 = 前滑渐进点打滑的力 = sidewaysFriction.extremumValue = sidewaysFriction.asymptoteValue = forwardFriction.extremumValue = forwardFriction.asymptoteValue//前滑摩擦特性的极值 向 漂移参数*手刹系数 平滑移动= Mathf.SmoothDamp(forwardFriction.asymptoteValue, driftFactor * handBrakeFrictionMultiplier, ref velocity, drfitSmoothFactor);for (int i = 0; i < 4; i++){//将初始化好的摩擦特性赋给车轮wheels[i].sidewaysFriction = sidewaysFriction;wheels[i].forwardFriction = forwardFriction;}//侧滑摩擦特性的极值 =  侧滑渐进点打滑的力 = 前滑摩擦特性的极值 = 前滑渐进点打滑的力 = 1.1fsidewaysFriction.extremumValue = sidewaysFriction.asymptoteValue = forwardFriction.extremumValue = forwardFriction.asymptoteValue = 1.1f;//给前轮增添前轮的额外抓地力for (int i = 0; i < 2; i++){wheels[i].sidewaysFriction = sidewaysFriction;wheels[i].forwardFriction = forwardFriction;}//刚体额外添加向前的牵引力rigidbody.AddForce(transform.forward * (Km_H / 400) * 10000);}else  //未按下刹车的状态{//给轮胎侧向和前滑摩擦属性初始化赋值forwardFriction = wheels[0].forwardFriction;sidewaysFriction = wheels[0].sidewaysFriction;forwardFriction.extremumValue = forwardFriction.asymptoteValue = sidewaysFriction.extremumValue = sidewaysFriction.asymptoteValue= ((Km_H * handBrakeFrictionMultiplier) / 300) + 1;for (int i = 0; i < 4; i++){wheels[i].forwardFriction = forwardFriction;wheels[i].sidewaysFriction = sidewaysFriction;}//检查后轮打滑量以控制漂移for (int i = 2; i < 4; i++){//声明轮胎接触信息WheelHit wheelHit;//得到轮胎接触地面的信息wheels[i].GetGroundHit(out wheelHit);smoke//if (wheelHit.sidewaysSlip >= 0.3f || wheelHit.sidewaysSlip <= -0.3f || wheelHit.forwardSlip >= .3f || wheelHit.forwardSlip <= -0.3f)//    playPauseSmoke = true;//else//    playPauseSmoke = false;//当侧身滑 轮胎向侧向打滑的信息if (wheelHit.sidewaysSlip < 0) //向右边打滑时driftFactor = (1 -InputManager.InputManagerment .horizontal ) * Mathf.Abs(wheelHit.sidewaysSlip);if (wheelHit.sidewaysSlip > 0)//向左边打滑时driftFactor = (1 + InputManager.InputManagerment.horizontal) * Mathf.Abs(wheelHit.sidewaysSlip);}}}

🎶(B系统的优化——转向 ,阻力 和 制动


😶‍🌫️阻力优化

静止时空气阻力我们设置大一点
运动时我们的空气阻力就设置小一点

😶‍🌫️转向优化

因为当速度越快的时候转向的角度若还是还速度慢的时候转向的角度一样很容易出现过度侧滑和大角度漂移

😶‍🌫️制动优化

  • 手刹管理优化前代码 如下

  • 优化后:

—— 为什么这样,刹车这么小能刹住吗?
可以我们的自动变速器会自动减慢速度

 //手刹管理public void HandbrakControl(){for (int i = 0; i < wheels.Length; i++){//将车轮的制动力度初始化wheels[i].brakeTorque = brakVualue ;}//当按后退键时 速度大于10 km/h 制动力为500if (InputManager.InputManagerment .vertical  < 0){brakVualue = (Km_H  >= 10) ? 500 : 0;}else if (InputManager.InputManagerment.vertical == 0 && (Km_H <= 10 || Km_H  >= -10)){brakVualue = 10;}else{brakVualue = 0;}//------------刹车效果平滑度显示------------for (int i = 0; i < slip.Length; i++){WheelHit wheelhit;wheels[i].GetGroundHit(out wheelhit);slip[i] = wheelhit.forwardSlip; //轮胎在滚动方向上打滑。加速滑移为负,制动滑为正}}

🅰️


⭐【Unityc#专题篇】之c#进阶篇】

⭐【Unityc#专题篇】之c#核心篇】

⭐【Unityc#专题篇】之c#基础篇】

⭐【Unity-c#专题篇】之c#入门篇】

【Unityc#专题篇】—进阶章题单实践练习

⭐【Unityc#专题篇】—基础章题单实践练习

【Unityc#专题篇】—核心章题单实践练习


你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!



更多推荐

【Unity3D赛车游戏优化篇】【九】Unity中如何让汽车丝滑漂移?

本文发布于:2024-02-11 15:01:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1681590.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:赛车游戏   汽车   Unity3D   Unity

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!