unity3d 三分钟实现简单的赛车漂移

本文介绍了一个简单的赛车漂移实现方法,通过调整Unity3D的WheelCollider参数和利用摇杆输入,结合动力学原理,仅需几行代码即可让赛车实现漂移效果。适合初学者理解和实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

提到赛车游戏,大家最关心的应该就是漂移吧?!

从学unity开始,我就一直在断断续续的研究赛车

因为自己技术太烂、悟性太差等原因,我走了不少弯路

也许你会说,网上那么多资料,你不会查啊

是啊!网上一搜一大把unity赛车例程,还有好几篇被转发了很多次的赛车漂移实现思路

 

【wheelcollider:自己技术太烂搞不定】

赛车例程几乎都是用wheelcollider来实现的

我一直以为wheelcollider的参数简直就不是人能调的

直到上个星期我才听我好朋友 阿亮 说wheelcollider的参数不是随便调的

它是按照真实赛车来实现的,所以参数也要按照真实赛车来调

比如赛车车轮的间距、赛车重量、悬挂高度......

就好比小轿车使用了大货车的悬挂参数、大货车使用了小轿车的车轮参数

好吧,我承认我自己也是听得迷迷糊糊!

反正总而言之一句话:wheelcollider的参数的确是非常难调,但是懂的人还是能一下子就调好的(好像说的是废话,我是不懂的- -)

 

【实现思路的文章:自己悟性太差搞不定】

然后是关于赛车漂移实现思路的文章

有几篇被转发了很多次的文章,被转发了那么多次,那么漂移应该就是这个实现思路吧?可是大家的实现方式都不一样

我根本不知道漂移的实现是否有一个唯一的标准,如果有,那这个标准又是什么呢?

看了这些文章,漂移我还是没有研究出来,还是一点思路都没有

 

后来我偶然得到了一份商业赛车游戏的代码,然后漂移就实现出来了- -

听我说起来好像挺容易的!其实研究那份代码的过程特别煎熬!唉,不说了,都是泪啊

 

声明:下文中我要实现出来的漂移仅仅是个简单的漂移,非常简单!!!一个思路而已,并没有用到那份商业赛车游戏中的任何一句代码

注意:请使用Unity4.X版本,5.X版本的wheelcollider参数又变了,要哭了

 

准备工作:

1、下载CarWaypoint插件,使用插件中的demo。地址:http://www.cnblogs.com/shenggege/p/4295616.html

2、easytouch插件

 

导入CarWaypoint插件和easytouch插件

打开CarWaypoints/demo/Car Physics 场景,可以看到一辆车

Hierarchy面板除了前四项其余全部隐藏,运行起来跑一下,还是挺有漂移的感觉的,这是调wheelcollider参数调出来的

我们现在需要做的是用摇杆操作赛车,用另外一个思路让赛车转弯时会漂移

 

创建一个虚拟摇杆取名为:MoveJoystick,InteractionType选择Event Notification

新建一个C#脚本:RockerController,复制以下代码

  1 #region HeadComments
  2 /* ========================================================================
  3 * Copyright (C) 2015 ArthunGame
  4 *
  5 * 作    者:Arthun
  6 * 文件名称:RockerController
  7 * 功    能:摇杆控制器
  8 * 
  9 * =========================================================================
 10 */
 11 #endregion
 12 
 13 using UnityEngine;
 14 
 15 public class RockerController : MonoBehaviour
 16 {
 17     public static RockerController Instance;
 18 
 19     /// <summary>
 20     /// 摇杆移动回调
 21     /// </summary>
 22     /// <param name="isMove"></param>
 23     /// <param name="angle"></param>
 24     /// <param name="move"></param>
 25     public delegate void RockerMoveCallback(bool isMove, float angle, MovingJoystick move);
 26     public RockerMoveCallback rockerMoveCallback;
 27 
 28     void Awake()
 29     {
 30         if (Instance != null)
 31             Debug.LogError("Instance RockerController x2");
 32 
 33         Instance = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值