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函数先执行
通过示例代码我们清晰知道生命周期函数的生命周期