装修公司展厅效果图,长沙网站优化体验,建站推广外包,九星市场做网站#x1f468;#x1f4bb;个人主页#xff1a;元宇宙-秩沅
#x1f468;#x1f4bb; hallo 欢迎 点赞#x1f44d; 收藏⭐ 留言#x1f4dd; 加关注✅!
#x1f468;#x1f4bb; 本文由 秩沅 原创
#x1f468;#x1f4bb; 收录于专栏#xff1a;Uni… 个人主页元宇宙-秩沅
hallo 欢迎 点赞 收藏⭐ 留言 加关注✅!
本文由 秩沅 原创
收录于专栏Unity游戏demo
⭐️Unity3D赛车游戏⭐ 文章目录 ⭐️Unity3D赛车游戏⭐⭐前言⭐A车辆模型——如何制作一个合格的汽车实现简单的移动️font colorred1.导入车辆模拟模型。进行贴图放置。font colorred️2. wheel clider车轮碰撞器的添加font colorred️3.尺寸的适应️font colorred4运动测试 B车辆模型——用代码实现车轮的动画错误示范解决措施正确示范原理:完整代码 C车辆模型——相机的跟随️效果: D车辆模型——调节阻力⭐️⭐ ⭐前言⭐
– ️版本: Unity2021 ️适合人群Unity初学者 ️学习目标3D赛车游戏的基础制作 ️技能掌握 A车辆模型——如何制作一个合格的汽车实现简单的移动 ️1.导入车辆模拟模型。进行贴图放置。 ️2. wheel clider车轮碰撞器的添加 注意项车轮碰撞器的添加 和车轮模型必须分开 ️3.尺寸的适应 尺寸的适应 问题集结
问题1放置模型时 为什么有紧贴地面和 随机再空中的两种情况——Mesh colider的存在
问题2为啥会被弹飞——质量太小被车轮顶飞
问题3车辆为啥会抖动——未添加BoxColider碰撞器或者四个车轮碰撞器的位置不一致
要加一个车身Bosch leader碰撞器就不会抖动了 ️4运动测试 知识百科什么是扭矩 扭矩是指发动机运转时从曲轴端输出的平均力矩俗称为发动机的“转劲”是 发动机性能 的一个重要参数扭矩越大发动机输出的“劲”越大曲轴转速的变化也越快汽车的爬坡能力、起步速度和加速性也越好。 前后左右的运动
public class WheelMove : MonoBehaviour
{//四个轮子的碰撞器public WheelCollider[] wheels ;//扭矩力度public float motorflaot 200f;//转向力度public float steerflaot 20f;//初始化三维向量和四元数private Vector3 wheelPosition Vector3.zero;private Quaternion wheelRotation Quaternion.identity;private void FixedUpdate(){wheelsAnimation();//垂直轴不为0时if (Input.GetAxis(Vertical) ! 0) //当按下WS键时生效{for (int i 0; i wheels.Length; i){wheels[i].motorTorque Input.GetAxis(Vertical) *motorflaot;} }else //否则归0{for (int i 0; i wheels.Length; i){wheels[i].motorTorque 0;}}//水平轴不为0时if (Input.GetAxis(Horizontal) ! 0) //当按下AD键时生效{for (int i 0; i wheels.Length - 2 ; i) //只针对前轮{wheels[i].steerAngle Input.GetAxis(Horizontal) * steerflaot;}}else //否则归0{for (int i 0; i wheels.Length - 2; i) //只针对前轮{wheels[i].steerAngle 0;}}}}B车辆模型——用代码实现车轮的动画 错误示范 解决措施 wheelMesh[i].transform.rotation wheelRotation * Quaternion .AngleAxis (90,Vector3 .forward );正确示范 关键代码
//车轮动画相关public void wheelsAnimation(){for (int i 0; i wheels.Length ; i){//获取当前空间的车轮位置 和 角度wheels[i].GetWorldPose(out wheelPosition, out wheelRotation);//赋值给wheelMesh[i].transform.position wheelPosition;print(wheelRotation);wheelMesh[i].transform.rotation wheelRotation * Quaternion .AngleAxis (90,Vector3 .forward ); }}原理:
将车轮的网格模型他的位置和车轮碰撞器的空间位置和空间旋转角度相同步。达到车轮的滚动和转向动画效果。
————————————
完整代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//-------------------------------------
//—————————————————————————————————————
//___________项目: ______________
//___________功能 车轮的运动和动画相关
//___________创建者_______秩沅________
//_____________________________________
//-------------------------------------
public class WheelMove : MonoBehaviour
{//四个轮子的碰撞器public WheelCollider[] wheels ;//网格的获取public GameObject[] wheelMesh;//扭矩力度public float motorflaot 200f;//转向力度public float steerflaot 20f;//初始化三维向量和四元数private Vector3 wheelPosition Vector3.zero;private Quaternion wheelRotation Quaternion.identity;//辅助变量private Vector3 off;private void FixedUpdate(){wheelsAnimation();//垂直轴不为0时if (Input.GetAxis(Vertical) ! 0) //当按下WS键时生效{for (int i 0; i wheels.Length; i){//扭矩力度wheels[i].motorTorque Input.GetAxis(Vertical) *motorflaot;} }else //否则归0{for (int i 0; i wheels.Length; i){wheels[i].motorTorque 0;}}//水平轴不为0时if (Input.GetAxis(Horizontal) ! 0) //当按下AD键时生效{for (int i 0; i wheels.Length - 2 ; i) //只针对前轮{//转向角度wheels[i].steerAngle Input.GetAxis(Horizontal) * steerflaot;}}else //否则归0{for (int i 0; i wheels.Length - 2; i) //只针对前轮{wheels[i].steerAngle 0;}}}//车轮动画相关public void wheelsAnimation(){for (int i 0; i wheels.Length ; i){//获取当前空间的车轮位置 和 角度wheels[i].GetWorldPose(out wheelPosition, out wheelRotation);//赋值给wheelMesh[i].transform.position wheelPosition;print(wheelRotation);wheelMesh[i].transform.rotation wheelRotation * Quaternion .AngleAxis (90,Vector3 .forward );}}
} C车辆模型——相机的跟随 【Unity每日一记】摄像机相关代码API大全 ️效果:
摄像机需要实现跟随。车同步移动旋转。并且滑动鼠标滑轮可以调节与车辆之间的摄影距离。 关键API Quaternion.AngleAxis Quaternion.LookRotation Mathf.Clamp ____________________ using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//-------------------------------------
//—————————————————————————————————————
//___________项目: ______________
//___________功能 相机的跟随
//___________创建者秩沅_______________
//_____________________________________
//-------------------------------------
public class CameraFllow : MonoBehaviour
{//目标物体public Transform target;//鼠标滑轮的速度public float ScrollSpeed 4f;//Y轴差距参数public float Ydictance 0f; public float Ymin 0f;public float Ymax 4f;//Z轴差距参数public float Zdictance 4f;public float Zmin 4f;public float Zmax 8f;//相机看向的角度 和最終位置public float angle -25 ;public Vector3 lookPosition;void LateUpdate(){//Z轴和Y轴的距离和鼠标滑轮联系Ydictance Input.GetAxis(Mouse ScrollWheel) * ScrollSpeed;Zdictance Input.GetAxis(Mouse ScrollWheel) * ScrollSpeed;//設置Y軸和x轴的滚轮滑动范围Ydictance Mathf.Clamp(Ydictance , Ymin ,Ymax );Zdictance Mathf.Clamp(Zdictance , Zmin, Zmax );//确定好角度四元数 * 三维向量 三维向量lookPosition Quaternion.AngleAxis(angle, target .right) * -target.forward ;//更新位置transform.position target.position Vector3.up * Ydictance - lookPosition * Zdictance ;//更新角度transform.rotation Quaternion.LookRotation(lookPosition);}
} D车辆模型——调节阻力 调节车轮碰撞器的阻力__ 若不增大轮胎的阻力主要当车辆速度过快时。会因为。车辆打滑而失控。也会因为惯性。从而无法。自动停下。 --------------------
⭐️⭐ ⭐【Unity3D赛车游戏制作】【一】初步导入资源很哇塞
⭐【Unityc#专题篇】之c#进阶篇】
⭐【Unityc#专题篇】之c#核心篇】
⭐【Unityc#专题篇】之c#基础篇】
⭐【Unity-c#专题篇】之c#入门篇】
⭐【Unityc#专题篇】—进阶章题单实践练习
⭐【Unityc#专题篇】—基础章题单实践练习
⭐【Unityc#专题篇】—核心章题单实践练习 你们的点赞 收藏⭐ 留言 关注✅是我持续创作输出优质内容的最大动力、