2.3 物理引擎(上)

来源:互联网 发布:知美术馆里有多少画 编辑:程序博客网 时间:2024/05/04 02:26
day 3 物理引擎(上)
1, Input类简介
Input类是输入系统的接口,使用这个类能够读取输入管理器设置的按键,以及访问移动设备的多点触控或加速感应数据,可以通过该类来实现外部设备控制游戏场景里面的物体。 Edit->Project Settings ->Input打开输入管理器.
GetKey 按键按下期间返回true
GetKeyDown 按键按下的第一帧返回true
GetKeyUp 按键松开的第一帧返回true
例子:
float hor = Input.GetAxis ("Horizontal");
transform.Rotate(new Vector3(0,hor,0)*5f);
这样就可以控制左右旋转
float ver = Input.GetAxis("Vertical");
第一种,世界坐标:
transform.position += transform.forward * ver * Time.deltaTime * Speed;
第二种,自身位移
transform.Translate(new Vector3(0,0,ver)*Time.deltaTime*Speed;

2,鼠标属性和方法
mousePosition 得到当前鼠标位置
GetMouseButtonDown 鼠标按键按下的第一帧返回true
GetMouseButtonUp 鼠标按键松开的第一帧返回true
GetMouseButton 鼠标按键按下期间一直返回true
GetAxis(“Mouse X”) 得到一帧内鼠标在水平方向的移动距离
GetAxis(“Mouse Y”) 得到一帧内鼠标在垂直方向的移动距离
GetAxis(“Mouse ScrollWheel”) 获取鼠标滚轮的值

3,碰撞器
1,Collider碰撞器组件
引擎会自动的为该物体加上Collider(碰撞器)组件,其主要功能是进行碰撞检测.
2,场景物体的鼠标事件
OnMouseDown 鼠标在Collider之上,按下鼠标,该事件即被触发
OnMouseDrag 鼠标在Collider之上,当鼠标拖动时触发
OnMouseEnter 移动鼠标进入Collider区域的时候,该事件被触发
OnMouseExit 移动鼠标移出Collider区域的时候,该事件被触发
OnMouseOver 鼠标处于Collider之上时,每帧都会调用该事件
OnMouseUp 当鼠标弹起的时候,该事件被触发调用
OnMouseUpAsButton 当鼠标在同一个Collider上按下又弹起的情况下会触发调用该事件

4,刚体组件
1, 刚体组件的使用
Colloision Detection 碰撞检测:主要用于避免高速物体穿过其他物体,却未触发碰撞的情况。Discrete 不连续碰撞检测,适用于普通模式,这也是默认模式。Continuous 连续碰撞检测,一般用于高速运动物体碰撞的物体。Continuous Dynamic 动态连续碰撞检测,适用于高速物体。
2,刚体组件常用属性
velocity 刚体的速度
angularVelocity 刚体的角速度
drag 物体的阻力
angularDrag 物体的角阻力
mass 刚体的质量
useGravity 是否受重力影响
isKinematic 是否使用动力学
freezeRotation 是否冻结旋转
collisionDetectionMode 碰撞检测模式
position 刚体位置
rotation 刚体旋转
AddForce 给刚体添加一个力
AddExplosionForce 给刚体添加一个力,模拟爆炸效果
AddForceAtPosition 在指定的位置添加一个力
AddRelativeForce 添加相对力
AddRelativeTorque 添加相对力矩
MovePosition 使用刚体移动物体到指定位置
5,碰撞检测
静态碰撞器Static Collider:只有碰撞器没有刚体的物体;现象:保持静止或者轻微移动,如:平面/树木
刚体碰撞器 Rigjdbody Collider:具有刚体和碰撞器的物体;现象:完全受物理引擎影响
运动学刚体碰撞器:带刚体,且勾选Is Kinematic,此碰撞器不能添加力,只能通过transform移动.
碰撞发生的条件:
1,发生碰撞的两个物体都必须带有Colloder
2,发生碰撞的两个物体至少有一个带刚体
3,发生碰撞的两个物体必须有相对运动.
碰撞器的回调方法
OnCollisionEnter(Collision other) 碰撞开始一瞬间被调用
OnCollisionStay(Collision other) 一直保持碰撞状态时被调用
OnCollisionExit(Collision other) 碰撞分离的一瞬间被调用
调整物体颜色:
GetComponent<MeshRenderer>().material.color









原创粉丝点击