【Unity3D赛车游戏】【二】如何制作一个真实模拟的汽车

在这里插入图片描述


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

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

👨‍💻 本文由 秩沅 原创

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

🅰️Unity3D赛车游戏



文章目录

    • 🅰️Unity3D赛车游戏
    • 前言
    • 🎶(==A==)车辆模型——如何制作一个合格的汽车实现简单的移动
      • 😶‍🌫️<font color=red>1.导入车辆模拟模型。进行贴图,放置。
      • <font color=red>😶‍🌫️2. wheel clider车轮碰撞器的添加
      • <font color=red>😶‍🌫️3.尺寸的适应
      • 😶‍🌫️<font color=red>4,运动测试
    • 🎶(==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#专题篇】—核心章题单实践练习


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


在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1550015.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

opencv进阶18-基于opencv 决策树导论

1. 什么是决策树&#xff1f; 决策树是最早的机器学习算法之一&#xff0c;起源于对人类某些决策过程 的模仿&#xff0c;属于监督学习算法。 决策树的优点是易于理解&#xff0c;有些决策树既可以做分类&#xff0c;也可以做回归。在排名前十的数据挖掘算法中有两种是决策树[1…

linux优化ssd磁盘,Ubuntu下针对ssd硬盘优化

本人的Ubuntu 12.10是安装在三星64g的ssd上&#xff0c;所以有必要对此进行优化&#xff0c;发挥ssd的最佳性能&#xff0c;至于ssd的4k对齐&#xff0c;在ubuntu 11.10以上的版本不用担心&#xff0c;因为在格式化时就已经对齐了&#xff0c;建议手动分区&#xff0c;首先分一…

工业控制计算机固态硬盘,工业控制电脑ssd固态硬盘怎么正确使用?

工业控制电脑ssd固态硬盘怎么正确使用&#xff1f; 日期&#xff1a;2020年11月18日 上午11:08 浏览&#xff1a;169 次 工业控制电脑ssd固态硬盘怎么正确使用&#xff1f; 固态硬盘(solid state Drives) &#xff0c;也被称为“SSD”和“固盘”&#xff0c;普通的硬盘和固态硬…

网吧服务器固态硬盘使用,无盘服务器初次使用SSD固态硬盘应注意使用备用盘

如果你是初次使用SSD硬盘&#xff0c;在安装网吧无盘服务器上的时候&#xff0c;请先把一块硬盘划分一块干净的分区以备出现突发情况下使用&#xff0c;如果你SSD划分了好几个区&#xff0c;做为了多个用途&#xff0c;那么最好你要备用一块硬盘&#xff0c;划分分区跟SSD硬盘一…

SSD固态硬盘优化(转)

转自“http://www.ipc.me/ying-pan-you-hua-ji-qiao.html” SSD优化&#xff08;固态硬盘优化&#xff09;是如何优化的呢&#xff1f;相信许多人都对此一概不知&#xff0c;以下分享的是关于固态硬盘优化技巧&#xff0c;希望对正在使用SSD硬盘的童鞋有所帮助…… 众所周知&am…

三星固态速度测试软件,三星SSD固态硬盘优化工具Samsung Magician使用说明

前言:之前一直只有INTEL的固态硬盘有专用优化工具TOOLBOX,其实三星在今年也推出了类似的工具,名字叫Samsung Magician,并且现在咱们顺网的服务器使用的都是三星的SSD,所以现在来咨询这个固态硬盘应该如何优化的用户也越来越多,今天就教大家一下如何使用这个工具!若有遗漏,不足或…

SSD固态硬盘优化设置图文教程

一、开启AHCI优化SSD的第一步首先就是要确保你的磁盘读写模式为AHCI&#xff0c;一般来讲如果你的电脑是windows7系统&#xff0c;只需要在安装系统前进入BIOS设置下磁盘读写模式为“AHCI”即可&#xff0c;如果您已经安装过windows7&#xff0c;并且不确定是否磁盘工作在AHCI模…

什么是网闸+网闸和防火墙的区别

网闸的原理 网闸是用于隔离网络、阻断对内网具有潜在攻击可能的一切网络连接&#xff0c;它会重新封装数据&#xff0c;确保这个数据是安全的&#xff0c;这个时候&#xff0c;在放它进入内网。使外部攻击者无法直接入侵、攻击或破坏内网&#xff0c;保障了内部主机的安全。&am…

将AI融入CG特效工作流;对谈Dify创始人张路宇;关于Llama 2的一切资源;普林斯顿LLM高阶课程;LLM当前的10大挑战 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; &#x1f916; 将AI融入CG特效工作流&#xff0c;体验极致的效率提升 BV1pP411r7HY 这是 B站UP主 特效小哥studio 和 拓星研究所 联合投稿的一个AI特…

disabled and validated 不能DML

Inserting Rows Not Allowed in Table with DISABLED and VALIDATED Constraint (Doc ID 139337.1)​编辑To Bottom Problem Description: You create a table with a referential integrity constraint (a foreign key constraint) referencing a view constraint.SQL> C…

为什么计算机关机慢,现在告诉你,为什么电脑关机速度慢或关不了机

原标题&#xff1a;现在告诉你&#xff0c;为什么电脑关机速度慢或关不了机 电脑关机越来越慢&#xff0c;这个问题是不是让你感到十分头疼&#xff1f;接下来&#xff0c;小编给你支几招。 电脑在关机前&#xff0c;一定要关闭所有打开的程序。如果后台打开的程序过多&#xf…

计算机关机速度,关机速度慢

许多网民用了一段时间电脑后发现电脑关机速度慢了许多&#xff0c;但是不知道怎么优化电脑&#xff0c;让速度提高。下面本文为您盘点关机速度慢原因有哪些&#xff0c;并且告诉您加快关机速度的方法。 关机速度慢的原因是什么&#xff1f; 1.电脑存在木马病毒或者恶意插件&…

计算机关机慢怎么解决方法,电脑关机很慢,详细教您win7电脑关机很慢的解决方法...

电脑的问题千千万万&#xff0c;但是我们人类的智慧却也是永无止尽的。所以这几天网上帖子最多讨论的就是“电脑关机很慢”&#xff0c;每个人都在说自己的win7系统的电脑关机巨慢。所以为了解决网上小伙伴们遇到的问题&#xff0c;小编我今天就来给你们讲讲win7电脑关机很慢的…

学优计算机怎么关机,Windows7电脑关机速度慢的解决办法

最近一位Windows7用户反馈&#xff0c;电脑的关机速度越来越慢了&#xff0c;于是就问小编有没办法解决这个问题。其实电脑关机速度慢和开机速度慢一个道理&#xff0c;基本都是由于磁盘、电源等问题造成的。下面小编就给大家讲解Windows7系统关机速度慢的解决办法。 注&#x…

笔记本Windows10 关机突然变慢解决记录

平时笔记本点击关机后很快屏幕关闭&#xff0c;然后2--3秒后鼠标灯也灭了&#xff1b;但是昨天关机时&#xff0c;突然发现屏幕还是很快关闭&#xff0c;鼠标灯却亮了好几分钟才熄灭&#xff0c;于是在网上找了很多帖子&#xff0c;都没有解决问题&#xff0c;找笔记本售后在线…

为什么计算机关机慢,为什么电脑关机速度很慢_加快电脑关机速度的具体办法...

我们的电脑使用久后,就会出现各种各样的问题,如关机慢、卡顿等情况。那具体是因为什么原因造成的电脑关机速度慢呢?我们又该怎么来解决这一情况呢?今天系统城小编就来为大家分享关于加快电脑关机速度的具体办法,一起往下看吧。 具体办法如下: 方法一:清理垃圾 1、 关机慢可…

计算机关机慢什么原因,电脑关机速度很慢?什么原因?怎么解决?

自从微软的xp系统推出了舞台后&#xff0c;目前最低级的电脑系统就是win7系统&#xff0c;大部分人的电脑系统也是win7。电脑在win7系统使用下也会遇到许多的难题&#xff0c;其中的一种就是关机速度&#xff0c;有些人发现自己的电脑关机速度越来越慢了&#xff0c;过去十几秒…

计算机重启很慢,教您win7电脑关机很慢的解决方法

电脑在我们生活中出现的次数堪比我们每天吃的一日三餐&#xff0c;每天都离不开要使用它的时候。那么&#xff0c;今天小编就来跟你们说一个问题&#xff0c;那就是当遇到电脑关机速度很慢的时候&#xff0c;我们要怎么解决。今天小编我就告诉你win7电脑开机很慢的解决办法。 电…

Linux下关机速度慢

1、问题描述 最近装了deepwineqq 和wchat&#xff0c;但是莫名其妙的关机速度变得很慢&#xff0c;最后在网上找了资料以后解决办法如下 2、解决方案 2.1 打开system.conf文件 sudo vim /etc/systemd/system.conf 注&#xff1a;如果你没有安装vim的话使用vi也都是一样的&…

电脑关机很慢是怎么回事

可能很多朋友在给电脑关机时&#xff0c;都会遇到电脑关机速度慢的情况&#xff0c;其实很多时候都是因为有程序在运行的结果&#xff0c;我们只要关闭一些任务进程就可以改善这个问题。 更多win11教程尽在小白系统重装官网 系统&#xff1a;win10系统 电脑&#xff1a;联想I…