unity目前版本实现赛车的技术方案主要有3种:

1、wheelCollider,设置motorTorque、brakeTorque、steerAngle来实现车子的推动和转弯,优点是上手简单,而且很快就能让车子平稳的跑起来,也不会轻易翻车。缺点是这个模拟算法貌似还有点问题,在某些情况下会出现比较奇怪的现象。wheelCollider在与地面摩擦时,使用的是wheelCollider本身的摩擦属性,与地面无关,若想在不同路面上有不同的速度效果,则需要动态改变轮胎的属性。

2、AddForce,持续给车子AddForce,使车子跑起来。

3、手动设置车子的velocity,或者设置车子的位置,这种看似简单,但是很难有赛车的感觉。

经过各种尝试,最终选择使用了wheelCollider实现。

考虑到物理碰撞的不确定性,我们把车子的模型和物理模型分开。这样做的好处有两点:一是在update里面,更新车子模型的位置信息,平滑的逼近物理模型,这样更平滑一点;二是方便在某些时刻,让车子模型单独做一些动作或者其他改变。

车子的物理模型

CarTrigger最大,比车子模型还要大一圈,是一个BoxCollider,isTrigger为TRUE,不进行实际的物理碰撞反馈。主要用于提前检测到碰撞,当撞到路边或者是其他障碍,在OnTriggerXXX中可以做一些简单的反弹、减速,而不进行真正的物理碰撞。那么问题来了,当物体速度太快时,因为没有物理碰撞,车子就很可能会出现穿墙或者是卡在障碍里面的情况。

FrontCollider和BackCollider,非trigger,进行实际的物理碰撞,大大减少了车子穿墙的概率。

WheelCollider,控制车子的推力和拐弯。

有了这样一个模型,然后在FixedUpdate,持续设置wheelCollider.maxTorque和steelAngle,车子就能跑起来了。

但是仅仅能跑起来了,除了漂移之类的操作,跟电脑上的赛车游戏有点像,但是离手机上的赛车游戏还有点距离。比如车子拐弯的时候,一旦撞到路边,除了重置(无法倒车)就没有其他办法了,玩家的挫败感比较强。现在手机上的赛车游戏,国内比较火的有我是车神、雪岭雄风,这两个游戏的共同点是玩家的操作不会改变车子的行驶方向,只会改变车子的赛道,就算不操作也基本能跑完全程,而不会卡死,是一个类跑酷的玩法,也比较符合手机操作的习惯。

所以接下来的工作就是研究可以转弯的跑酷。

Unity的赛车游戏实现思路的更多相关文章

  1. Unity创作赛车游戏的四款插件

    本文,我们将介绍其中4款:Racing Game Starter Kit.GeNa 2 .NWH Vehicle Physics.Curvy Splines. Racing Game Starter ...

  2. Unity赛车游戏之移动

    这个赛车游戏真是让我费劲脑汁啊.尤其是写这种系统化的东西. 目前漂移还没找到更好的算法,不过基本的移动还是可以做到的. 别看就光是个移动,其实也是很费事的. Unity给了个对于赛车系统很好的碰撞组件 ...

  3. 使用Unity3D的设计思想实现一个简单的C#赛车游戏场景

    最近看了看一个C#游戏开发的公开课,在该公开课中使用面向对象思想与Unity3D游戏开发思想结合的方式,对一个简单的赛车游戏场景进行了实现.原本在C#中很方便地就可以完成的一个小场景,使用Unity3 ...

  4. 使用Unity3D引擎开发赛车游戏

    Car Tutorial 在Unity3D的Asset Store有一个赛车的Demo —— Car Tutorial,看起来特别酷的赛车游戏Demo,不过我还没有下载下来,因为在公司下载Assets ...

  5. unity3d 赛车游戏——复位点检测优化、反向检测、圈数检测、赛道长度计算

    接着上一篇文章说 因为代码简短且思路简单 所以我就把这几个功能汇总为一篇文章 因为我之前就是做游戏外挂的 经过验证核实,**飞车的复位点检测.圈数检测就是以下的方法实现的 至于反向检测和赛道长度计算, ...

  6. unity3d 赛车游戏——复位点检测

    一直没有时间写博客 昨天我的CarWaypoints插件也告一段落了 今年没回家,过年就我一个人 挺无聊的,那就休息一天写几篇博客吧 我的代码可能很少,但是思路很重要 希望不懂的朋友别只copy代码 ...

  7. Siki_Unity_1-8_使用Unity开发2D游戏_PongGame

    Unity 1-8 使用Unity开发2D游戏 PongGame 任务1:演示 http://pan.baidu.com/s/1pKUHsev; up2i 任务2:案例介绍 创建PongGame,注意 ...

  8. Unity中制作游戏的快照游戏支持玩家拍快照

    Unity中制作游戏的快照游戏支持玩家拍快照 有些游戏支持玩家“拍快照”,也就是将游戏的精彩瞬间以图片的形式记录下来的功能.这个功能比较有趣,而且以后的用途也会很广,为此本节打算介绍:截取矩形区域内游 ...

  9. Unity塔防游戏开发

    Unity3D塔防开发流程 配置环境及场景搭建编程语言:C#,略懂些许设计模式,如果不了解设计模式,BUG More开发工具:Unity3D编辑器.Visual Studio编译器开发建议:了解Uni ...

随机推荐

  1. BZOJ 2152:聪聪可可(树上点分治)

    题目链接 题意 中文题意. 思路 和上一题类似,只不过cal()函数需要发生变化. 题目中要求是3的倍数,那么可以想到 (a + b) % 3 == 0 和 (a % 3 + b % 3) % 3 = ...

  2. git简单使用-GitHub

    本文描述window下如何使用git工具,操作GitHub远程代码库 一,准备工作: 1,安装git工具,一路默认next安装即可,下载地址 2,注册账号或者创建厂库(已有忽略) 注册账号后,创建仓库 ...

  3. while循环的初始以及编码的初始

    whlie循环 why:比如要多次重复做一件事情,如歌曲列表循环,银行卡密码错误多次重复! what:whlie无限循环. how: ##基本结构while 条件:    循环体 基本原理 循环如何终 ...

  4. Altium Designer设计PCB--如何设置铺铜与导线或过孔的间距

    笑话: 到银行汇款,车临时停路边上. 为了怕交警罚就把朋友留下看车,跟他说有查车的过来了告诉我一声. 进去几分钟果然有交警来了. 那个朋友风风火火地闯进银行大声吼道:“大哥,警察来了,快走啊!” 偌大 ...

  5. C语言学习书籍推荐《学通C语言的24堂课》下载

    下载地址:点我 编辑推荐 <学通C语言的24堂课>:用持续激励培养良好习惯以良好习惯铸就伟大梦想——致亲爱的读者朋友在开始学习<学通C语言的24堂课>的同时,强烈建议读者朋友同 ...

  6. P2344 奶牛抗议 离散化+前缀和+动态规划+树状数组

    [题目背景] Generic Cow Protests, 2011 Feb [题目描述] 约翰家的N 头奶牛正在排队游行抗议.一些奶牛情绪激动,约翰测算下来,排在第i 位的奶牛的理智度为Ai,数字可正 ...

  7. 【较复杂bfs】洪水-C++

    描述 魔法森林的地图是R行C列的矩形.能通行的空地表示为'.',C君倾倒洪水的地点标记为'*',无法通行的巨石阵标记为'X',海狸的巢穴标记为'D',而画家和三只小刺猬的初始位置标记为'S'. 每一分 ...

  8. mysql -h139.129.205.80 -p test_db_dzpk < db.dump

    mysqldump -h139.129.205.80 -uroot -p db_a > db_dzpk.dump mysql -h139.129.205.80 -p test_db< db ...

  9. 洛谷P2172 [国家集训队]部落战争 题解

    题目链接:https://www.luogu.org/problemnew/show/P2172 分析: 不要被[国家集训队]的标签吓到,其实这题不是很难. 本题可以对比P4304 [TJOI2013 ...

  10. deque双端队列笔记

    clear()clear()clear():清空队列 pushpushpush_back()back()back():从尾部插入一个元素. pushpushpush_front()front()fro ...