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. HDU 4462:Scaring the Birds(暴力枚举+状态压缩)

    http://acm.hdu.edu.cn/showproblem.php?pid=4462 题意:有一个n*n的地图,有k个空地可以放稻草人,给出每个空地可以放的稻草人属性,属性中有个R代表这个位置 ...

  2. 小代学Spring Boot之开篇

    想要获取更多文章可以访问我的博客 - 代码无止境. 前情提要 小代是一名入职不久的程序员,公司同事都亲切的称他小代.有一天小代的老大陈BOSS和小代说,公司后端最近准备换技术框架了. 小代: 换成啥? ...

  3. 基于C#的机器学习--深层信念网络

    我们都听说过深度学习,但是有多少人知道深度信念网络是什么?让我们从本章开始回答这个问题.深度信念网络是一种非常先进的机器学习形式,其意义正在迅速演变.作为一名机器学习开发人员,对这个概念有一定的了解是 ...

  4. Centos7.4 的yum源库配置。

    http://mirrors.163.com/.help/centos.html https://www.cnblogs.com/mchina/archive/2013/01/04/2842275.h ...

  5. C语言指针专题——序

    看到好多的C语言初学者学到指针时,都觉得指针怎么那么难啊!我也想起了我当时学习指针时遇到的困难,确实很难!到底是教程写的不好呢,还是老师教的不好呢?我觉得都有. 网上搜索指针讲解的资料很多,我也看了不 ...

  6. Python学习3——Python的简单推导

    列表推导是一种从其他列表创建列表的方式,类似于数学中的集合推导,列表推导的工作原理非常简单,类似于for循环.(以下代码均在IDLE实现) 最简单的列表推导: >>>[x*x for ...

  7. Node.js socket 双向通信

    使用场景:  聊天室:大量数据常驻交互: 技术栈: Node.js,     Vue.js || 原生JS 服务端代码: const app = require('http').createServe ...

  8. MapReduce之WordCount

    用户统计文件中的单词出现的个数 注意各个文件的导包,job的封装步骤 WordCountMapper.java package top.wintp.mapreduce.wordcount; impor ...

  9. PTA L2-031 深入虎穴 非dfs的一点想法

    著名的王牌间谍 007 需要执行一次任务,获取敌方的机密情报.已知情报藏在一个地下迷宫里,迷宫只有一个入口,里面有很多条通路,每条路通向一扇门.每一扇门背后或者是一个房间,或者又有很多条路,同样是每条 ...

  10. 手把手带你入门 Spring Security!

    Spring Security 是 Spring 家族中的一个安全管理框架,实际上,在 Spring Boot 出现之前,Spring Security 就已经发展了多年了,但是使用的并不多,安全管理 ...