Unity3d WheelCollider制作赛车游戏
真实赛车游戏
- 车轮碰撞器
车轮碰撞器
首先我们要知道车轮碰撞器里面的一些数据,给大家看一张表;
1、我们可以去资源商店里面找一个车子的模型下载下来,要车身和轮胎是分开的。WheelCollider
2、我们要对车子的车身添加碰撞器,这里注意我们在调整碰撞框的时候不要把轮子放进去了,你们看图就明白了,还要给车子添加刚体,添加在父级对象里面也就是car_1。
3、我们添加一个空对象WheelCollider,里面放四个车轮的车轮碰撞器,如图
上面的WheelControl放的是四个车轮,我们还要添加一个空对象centermess,把它的位置调在车身的中心位置。
这些是我们在引擎上面要做的事情,下面就是脚本
我们首先定义
public WheelCollider wheelLeftFront;//车轮碰撞器—左前轮public WheelCollider wheelLeftBack;public WheelCollider wheelRightFront;public WheelCollider wheelRightBack;public Transform colliderLeftFront;//车轮public Transform colliderLeftBack;public Transform colliderRightFront;public Transform colliderRightBack;public Transform centermess;public float MoTo = 600f;//力,也就是速度public float MaxRot = 100f;//转角private Rigidbody car;//刚体
然后我们在Start()里面初始化
void Start(){car = GetComponent<Rigidbody>();car.centerOfMass = centermess.localPosition;//这是给车座子添加质心,让车子不容易翻车}
在FixedUpdate()里面先获得碰撞器的力和转角
// An highlighted blockvoid FixedUpdate(){wheelLeftBack.motorTorque = Input.GetAxis("Vertical") * MoTo;//motorTorque代表车轮的扭力,就是动力wheelRightBack.motorTorque= Input.GetAxis("Vertical") * MoTo;wheelLeftFront.steerAngle= Input.GetAxis("Horizontal") * MaxRot;//steerAngle代表转角wheelRightFront.steerAngle= Input.GetAxis("Horizontal") * MaxRot;}
在Update()里面实现控制
// An highlighted blockvoid Update(){var pos = Vector3.zero;//初始位置,也就是静态时的位置var rot = Quaternion.identity;//四元数,初始角度,也就是静态时的角度wheelLeftFront.GetWorldPose(out pos, out rot);//GetWorldPose是世界状态,也就是在世界坐标系中的状态colliderLeftFront.position = pos;colliderLeftFront.rotation = rot;wheelRightFront.GetWorldPose(out pos, out rot);colliderRightFront.position = pos;colliderRightFront.rotation = rot;wheelLeftBack.GetWorldPose(out pos, out rot);colliderLeftBack.position = pos;colliderLeftBack.rotation = rot * Quaternion.Euler(0, 180, 0);//这里要去了解四元数和欧拉角的关系wheelRightBack.GetWorldPose(out pos, out rot);colliderRightBack.position = pos;colliderRightBack.rotation=rot* Quaternion.Euler(0, 180, 0);}
完整代码
// An highlighted block
using UnityEngine;public class move : MonoBehaviour
{public WheelCollider wheelLeftFront;public WheelCollider wheelLeftBack;public WheelCollider wheelRightFront;public WheelCollider wheelRightBack;public Transform colliderLeftFront;public Transform colliderLeftBack;public Transform colliderRightFront;public Transform colliderRightBack;public Transform centermess;public float MoTo = 600f;public float MaxRot = 100f;private Rigidbody car;void Start(){car = GetComponent<Rigidbody>();car.centerOfMass = centermess.localPosition;}void FixedUpdate(){wheelLeftBack.motorTorque = Input.GetAxis("Vertical") * MoTo;wheelRightBack.motorTorque= Input.GetAxis("Vertical") * MoTo;wheelLeftFront.steerAngle= Input.GetAxis("Horizontal") * MaxRot;wheelRightFront.steerAngle= Input.GetAxis("Horizontal") * MaxRot;}// Update is called once per framevoid Update(){var pos = Vector3.zero;var rot = Quaternion.identity;wheelLeftFront.GetWorldPose(out pos, out rot);colliderLeftFront.position = pos;colliderLeftFront.rotation = rot;wheelRightFront.GetWorldPose(out pos, out rot);colliderRightFront.position = pos;colliderRightFront.rotation = rot;wheelLeftBack.GetWorldPose(out pos, out rot);colliderLeftBack.position = pos;colliderLeftBack.rotation = rot * Quaternion.Euler(0, 180, 0);wheelRightBack.GetWorldPose(out pos, out rot);colliderRightBack.position = pos;colliderRightBack.rotation=rot* Quaternion.Euler(0, 180, 0);}
}
完整的放在网盘里的
链接:https://pan.baidu.com/s/1Sh8WjWuLnNgXGeq7tGZ1Hw
提取码:98pi
Unity3d WheelCollider制作赛车游戏相关推荐
- 由浅入深学习Flash制作赛车游戏教程
赛车游戏我们总是遇到!今天给大家简单讲解一下. 先测试效果: [url=http://www.webjx.com/download.php?url=http://www.webjx.com/upfil ...
- 关于制作赛车游戏的一些入门知识
在过去的几个月里,我拉着几个死党一起搞了一个iOS赛车游戏.由于当时还在上班,所以我一边白天上班,一边晚上+周末倒腾这个游戏.尽管这只是一个很简单的2D游戏,但我却在里面用了一些比较'有趣'的方法来使 ...
- unity3d 剧情制作_游戏设计作品集干货:跨专业如何入门 Unity3D 游戏引擎?
游戏设计作品集,涉及游戏策划与玩法.游戏美术与Unity3D游戏引擎等内容的学习. 之前克瑞斯介绍过了游戏策划与游戏美术,本期再详细聊下什么是Unity3D游戏引擎,以及学习Unity3D游戏引擎的详 ...
- c语言赛车游戏代码,python制作赛车游戏
有谁能帮我用Python解一个题或者做个小游戏,题目自行设计,大概50行, 代码如下: >>> import commands >>> dir(commands) ...
- c语言赛车游戏代码大全,初学者天地游戏制作--赛车游戏的完整图
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 以下是一个用线和矩形绘制的简单赛车 #include #include void main(void){ int gdriver=DETECT,gmode ...
- 3D赛车游戏架构设计
赛车作为一个非常热门的行业,在游戏领域也是一样的,因其刺激性和其PK性,所以一直受玩家欢迎,很多公司尝试制作赛车游戏,但是由于其体验性不理想,大部分游戏都不成功.成功的游戏比如有腾讯的卡丁车,还有天天 ...
- Unity创作赛车游戏的四款插件
本文,我们将介绍其中4款:Racing Game Starter Kit.GeNa 2 .NWH Vehicle Physics.Curvy Splines. Racing Game Starter ...
- 技术干货:赛车游戏中最短路径和最小曲率路径算法
转自:https://www.gameres.com/492096.html 最近参与了一个非常蛋疼的业余时间小项目:给定赛道和赛车模拟程序,求赛车跑完赛道的最快的办法.对于这个问题,我一开始的想法是 ...
- 使用Unity3D 自主实战开发的赛车游戏实例,关键点记录 (一)之赛车游戏总体介绍
我之前一直在做C# 的Winform多媒体软件开发.从去年十一月份开始转型自学Unity3D.发现对这个领域.这个方向更为喜爱.在经过两个多月的跟书自学.跟游戏实例教程练习之后,决定自己完成一款游戏, ...
最新文章
- 企业如何提升管理能力,让企业协作更顺畅?
- 设计模式 -- 装饰者模式
- boost::mpl模块实现transform相关的测试程序
- 【51nod】1239 欧拉函数之和 杜教筛
- mysql的本地id可以随便设置马_MySQL中的账号与权限管理
- java 时钟 算法分析_java实现时钟方法汇总
- leetcode 341. 扁平化嵌套列表迭代器(dfs)
- java怎么弄redis,java怎么使用redis
- java 执行 cd_java执行cd命令
- python判断天数_python判断输入日期是该年的第几天
- Nginx + PHP + mysql CGI的一个可能的安全漏洞
- 50 years, 50 colors HDU - 1498(最小点覆盖或者说最小顶点匹配)
- LaTex的安装和使用
- 切底删掉顽固360的.dll文件、删除删不掉的一些文件
- 你知道全中国有多少个火车站吗?
- java贴图技术坦克世界_坦克世界游戏图像设置技巧 如何提高FPS
- F - 喜欢砍竹子的黑泽明
- Google Gmail十年回首
- 从Sklearn Bunch对象到Pandas DataFrame对象的转换
- 基于Java的超级玛丽游戏的设计与实现(含源文件)
热门文章
- Oracle分区表3种重建方法(基础原理、优点、类型、表分区总结)----(实战)
- 【经验贴】22东华大学计算机专硕854考研上岸经验贴
- linux rm 文件找回_linux下执行rm -rf命令后如何恢复
- 光伏并网柜综合监测方案
- Eclipse Theia 揭秘之启动流程篇
- 基于arduino下的巡线小车
- 自动售卖系统开发系列——人脸识别自动售卖机二代ChingTom
- python中的异常处理try/except/finally/raise
- 如何利用阿里妈妈(alimama)赚零花钱
- 数据结构---------层次建树(完全二叉树)