关于Unity中自带摇杆与车轮碰撞器的使用
准备
在创建好项目目录的基础上
导入一个第三方的资源包,在Project面板里面
右键---->Import Package---->Custom Package---->easy_touch.unitypackage
导入完成后,会发现菜单栏多了一个Hedgehog Team
Hedgehog Team---->Easy Touch---->Add Easy Touch for C#
创建摇杆
在Hierarchy面板里面
右键---->创建一个空节点joystick---->给节点添加组件Easy Joystick---->Game视图出现摇杆
写一个脚本来打印出摇杆的动态选定坐标,脚本叫test_joystick,挂载在joystick节点下,JoystickTouch (x, y) [-1, 1]
脚本内容:
using UnityEngine; using System.Collections;public class test_joystick : MonoBehaviour {EasyJoystick joystick;// Use this for initializationvoid Start () {this.joystick = this.GetComponent<EasyJoystick>();}// Update is called once per framevoid Update () {Debug.Log(this.joystick.JoystickTouch.x + ":" + this.joystick.JoystickTouch.y);} }
导入模型和背景
导入赛车资源F1文件夹和篮球场plane贴图到Resources目录下
创建一个game_root节点,把F1---->F1赛车模型预制体拖进game_root,当作它的子节点
创建一个plane平面节点当做game_root的子节点,把篮球场贴纸拖进Scene视图中的plane,就会自动帮我们生成一个材质球并关联到节点上,3D节点都要材质才能显示内容,2D节点只要图片就可以了。
材质plane的shader设置为Mobile Diffuse
节点F1的子节点如果没有自动关联好材质球的话,需要手动拖材质球关联它的子节点
把相同名称的材质球拖进子节点的Mesh Renderer的Element中,有多少个Element就拖几次
把F1节点还原为普通节点GameObject---->Break Prefab Instance
配置车轮参数
为了让赛车能够运动起来,首先要给它一个刚体组件Rigidbody,设置质量Mass为50
为了发生碰撞,我们还需要给赛车添加碰撞器组件Box Collider,设置大小Size为X=2.5,Y=0.5,Z=8,调整它的位置Center的Y=0.5
在F1节点下面创建一个空节点phy_wheel,在phy_wheel下面再创建一个轮子节点FL
给FL添加车轮碰撞器Wheel Collider,设置车轮质量Mass为2,弹力Spring为90,阻力Damper设置为45,其他的车轮参数为
1: 添加赛车车体碰撞器;
2: 添加4个车轮碰撞器;
3: 配置车轮参数:
mass: 质量
radis半径
Wheel Dramping Rate 车轮旋转阻尼
Suspension Distance 悬挂高度,就是车轮上下颠簸的上下幅度距离;
Force App Point Distance 悬挂力应用点;
Center 车轮碰撞器中心点,
Suspension Spring 悬挂弹簧:
sprint 弹力 Damper 悬浮速度阻尼
TargetPoint 悬挂中心
向前摩擦与侧向摩擦
Extermum Slip 先前摩擦曲线滑动值
Extermum Point 先前摩擦曲线极值点;
Asymptote Slip 向前渐进线滑动值;
Asymptote Point 前向曲线渐近线点;
stiffness 刚度 控制向前摩擦曲线的倍数;
配置好一个轮子后,再复制三个轮子出来,一个四个轮子FL,FR,BL,BR,然后把轮子节点移动到对应的模型中的四个轮子的位置。
使车子随着摇杆运动
我们首先创建一个脚本car挂载在F1节点下面来控制车轮随着摇杆的移动而运动
car脚本内容:
using UnityEngine; using System.Collections;public class car : MonoBehaviour {public WheelCollider fl;public WheelCollider fr;public EasyJoystick joystick;float max_torque = 20;float max_angle = 30;// Use this for initializationvoid Start () {}// Update is called once per framevoid Update () {// 摇杆的y 控制牵引力,如果牵引力为正,往前开反之往后开this.fl.motorTorque = this.joystick.JoystickTouch.y * max_torque;this.fr.motorTorque = this.joystick.JoystickTouch.y * max_torque;// end// 摇杆的x 用来控制转向;this.fl.steerAngle = this.joystick.JoystickTouch.x * max_angle;this.fr.steerAngle = this.joystick.JoystickTouch.x * max_angle;// end } }
设置一下车的助力,这样可以让车自己停下来,设置阻力的话设置车轮阻力和平面材质阻力都不明显,设置F1节点的刚体里面的Drag属性是最明显的。
这时候车已经可以跟着摇杆的方向而运动了,但是模型的图像没有任何变化,车轮没有任何转动和转向。
控制车轮图像变化
1: 刚体质量 50, 轮子质量2 半径是0.64;
2: 弹力 90, 阻力 45;
3: motorTorque:车轮移动的力矩,为正向前,为负向后
4: steerAngle: 车轮的转向角;
5: rmp: 每分钟转多少转;
我们需要再创建一个脚本wheel挂载在四个车轮节点(F1--->Wheel--->BL BR FL FR)下面,来控制轮子图像的变化
wheel脚本里面的内容:
using UnityEngine; using System.Collections;public class wheel : MonoBehaviour {public WheelCollider phy_wheel;float rot_degree = 0.0f;// Use this for initializationvoid Start () {}// Update is called once per framevoid Update () {this.rot_degree += ((this.phy_wheel.rpm * 360.0f / 60) * Time.deltaTime);//自转角度this.transform.rotation = this.phy_wheel.transform.rotation * Quaternion.Euler(this.rot_degree, this.phy_wheel.steerAngle, 0);//做和刚体一样角度的旋转,加上this.rot_degree参数才会绕X轴自转 } }
关于Unity中自带摇杆与车轮碰撞器的使用相关推荐
- 详解Unity中的车轮碰撞器Wheel Collider
前言 碰撞体组件定义了物体的物理性状,Unity中有一系列基本碰撞体,我们可以使用它们组合成任意形状,但除了基本碰撞体之外,Untiy还提供了诸如车轮(Wheel).网格(Mesh).地形(Terra ...
- Unity车轮碰撞器起步刹车太慢
Unity车轮碰撞器起步刹车太慢 遇到的问题 尝试的办法 刹车慢 起步慢 遇到的问题 在学校学习<物理引擎>专业课的时候,我们的期末作业是用unity的WheelCollider组件来对汽 ...
- Unity学习日志_车轮碰撞器简介
Unity学习日志_车轮碰撞器简介 1. 简介: 车轮碰撞器是一种针对地面车辆的特殊碰撞体.他有内置的碰撞检测.车轮物理系统和有滑胎摩擦的参考体.除了车轮,该碰撞体也可以用于其他游戏对象. 属性: M ...
- 【unity基础_Day15】 灯光系统、粒子系统、车轮碰撞器、TimeLine时间轴
一.灯光系统 Windos--Lighting--LightExplorer 可以直接查看场景中所有的灯光以及参数,方便环境灯光多的场景的操作 二.粒子系统 Unity粒子系统简介_悲欢离合的博客-C ...
- Unity 车轮碰撞器的入门使用(二)
Unity 车轮碰撞器的入门使用(二) 这节来分析一下车轮碰撞器里面的参数:如图 Mass:车轮的质量大小 Radius:车轮的半径大小 Wheel Damping Rate:车轮的阻尼值大小,必须要 ...
- Unity组件_车轮碰撞器
Wheel Collider Mass 车轮重量 Radius 轮胎半径 Wheel Damping Rate 轮胎阻力 Suspension Distance 悬挂 ...
- python三层装饰器-python中自带的三个装饰器的实现
说到装饰器,就不得不说python自带的三个装饰器: 1.@property 将某函数,做为属性使用 @property 修饰,就是将方法,变成一个属性来使用. class A(): @propert ...
- python中自带的三个装饰器
说到装饰器,就不得不说python自带的三个装饰器: 1.@property 将某函数,做为属性使用 @property 修饰,就是将方法,变成一个属性来使用. class A():@property ...
- python 三个内置装饰器,python中自带的三个装饰器
说到装饰器,就不得不说python自带的三个装饰器: 1.@property 将某函数,做为属性使用 @property 修饰,就是将方法,变成一个属性来使用. class A(): @propert ...
最新文章
- 【LaTeX 语法】字母表示 ( 大写、小写、异体 希腊字母 | 粗体字母 | 花体字母 )
- 【转】tomcat性能调优
- Cisco H3C 端口汇聚互联
- zabbix3调用接口发送短信告警
- html5子页面无法弹出,弹出子页面,兼容ie
- ImageView一例
- Vue3里的setup中使用vuex
- 为WPF, UWP 及 Xamarin实现一个简单的消息组件
- 萤石网络摄像头服务器稳定吗,萤石摄像头画面稳定性如何?
- html 圆圈项目符号,html – 列表项下的项目符号
- bzoj 1053: [HAOI2007]反素数ant 51nod-1060:最复杂的数(反素数与因数个数计算)
- 电脑桌面云便签怎么将界面最小化?
- NAXX Central District 2 Kel‘Thuzad
- 基于Arduino的智能泡茶机(1)——机械系机械创新比赛总结技术点与不足处
- 局域网病毒入侵原理和防御
- xml中的大于小于号转义
- Excel中F4键的作用
- 微软输入法 ——当前时间 快捷键
- Training: PHP LFI (Exploit, PHP, Training)
- zabbix 监控 db2_二十多款开源的服务器监控软件,你用过几款? – 阿汤博客