Unity2017超基础入门(2)Input类、Rigidbody刚体、通过脚本添加物体,移动物体、八大生命周期函数

Input类

找到Edit下Project Setting中的Input

 * Input类(从上至下)
 * name:轴的名称,用于游戏加载界面和脚本中
 * descriptive name:描述名称,轴的正向按键的详细描述
 * descriptive negative name:轴的反向按键的详细描述
 * negative button:该按钮用于在负方向移动轴
 * positive button:该按钮用于在正方向移动轴

 * alt negative button:备用按钮,用于在负方向移动轴
 * alt positive button:备用按钮,用于在正方向移动轴

 * gravity:输入复位的速度
 * dead:模拟死区大小,任何小于该值的输入值(不论正负值)都会被视为0,通常用于摇杆
 * sensitivity:灵敏度,该值越大响应时间越快
 * snap:捕获,当获取到相反信号时,轴的数值为立即置为0
 * invert:反向,可以让正向按钮发送负值,负向按钮发送正值
 * type:控制轴的输入设备类型

Rigidbody(刚体)组件

 *rigidbody组件 刚体
Mass:质量。数值越大物体下落越快
Drag:阻力,数值越大物体反向加速度越大
Angular Drag:角阻力,数值越大自身旋转的速度减慢的越快
Use Gravity:是否使用重力
Is Kenematic:是否受物理的影响

Interpolate:设置图像差值
1. 默认为none,由于图形更新比物理更新要快,可能会导致物体跳跃式前进。
2. Interpolate模式:物体会根据上一帧物体的位置进行平滑运动。
3. Extrapolate模式:物体会根据下一帧物体的位置进行平滑运动
Collision Detection:碰撞检测
对于高速运动的物体来说,当Collision Detection为默认的Discrete时,有可能存在一种情况:前一帧时,物体在碰撞器的一边,下一帧时,物体也已经穿越了碰撞器达到了另一边,以致于检测不到碰撞。这时,我们就需要连续碰撞检测。
1.    Discrete:非连续型检测模式(默认)
2.    Continuous:连续检测。

更加精细的碰撞检测,但是很耗资源;在这种状态下,当这个刚体与其他普通刚体碰撞时,仍将使Discrete的碰撞检测,但是与没有刚体的Mesh Collider碰撞时就会连续检测了。
3.    Continuous Dynamic:连续动态检测。
对没有刚体的Mesh Collider或是对处在Continuous或是Continuous Dynamic状态下的刚体使用连续碰撞检测,对其他的刚体使用普通的Discrete检测。


Continuous和Continuous Dynamic的区别在于对Continuous使用何种检测 ,Continuous使用Discrete,而Continuous Dynamic使用Continuous。但它们对物理性能都有很大影响。
1.    刚体和刚体之间的连续碰撞检测,刚体的碰撞器必须是BoxCollider或SphereCollider或CapusleCollider.
2.    刚体和非刚体(静态碰撞器)之间的连续碰撞检测,刚体的碰撞器必须是BoxCollider或SphereCollider或CapusleCollider,非刚体的碰撞器必须是Mesh
Constraints:冻结,停止某个轴向感应物理引擎的效果
1.    Freeze Position:冻结x轴方向,y轴方向,z轴方向
2.    Freeze Rotation:冻结x轴旋转,y轴旋转,z轴旋转

物理效果添加

通过Project的create加入physics material挂载至这里

通过脚本添加物体

1、首先通过Project的create加入material预制体,我们创建一个Prefab文件夹来存放预制体

将物体拖拽至文件夹中创建预制体,如果物体名称变为蓝色则成功,红色代表预制体丢失

2、编写脚本(3种方法,创建,创建和位置,创建和父节点)

3、挂载脚本并将预制体拖入脚本

4、运行并成功生成预制体(clone)

控制物体移动

ps:在操控刚体时,代码要写在FixedUpdate中,每帧的间隔固定更准确

我们为刚体挂载上脚本成功运行即可符合物理规则的控制移动

生命周期函数

 * 生命周期函数
 * 名称                   触发时机                        作用
 * Awake                   脚本实例被创建时调用         用于对游戏的初始化
 * OnEnable             当对象变为激活状态时调用         -
 * Start                     在awake调用后再调用            用于对游戏的初始化
 * FixedUpdate        每隔固定时间调用一次           用于更新游戏对象物理状态
 * Update               每隔固定时间调用一次          用于更新游戏的场景和状态
 * LateUpdate       在update之后调用             用于更新游戏的场景和状态,摄像机的更新
 * OnGUI               渲染和处理GUI事件        
 * OnDisable        当对象变为未激活状态时调用
 * OnDestroy        当对象被销毁时调用

* 无论有多少个脚本执行,相同类型的生命周期函数的执行顺序和挂载顺序有关系,后挂载的先执行,不同类型的生命周期函数执行顺序遵循生命周期函数规则,所有脚本的start函数一定会比所有脚本的update函数先执行

通过示例代码我们清晰知道生命周期函数的生命周期

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值