物体与组件的开关
组件的 Enable/Disable
就是控制物体上组件是否作用 可以通过 GetComponent<XXX>().enable = bool; 来控制组件的 Enable
物体的 Active/Inactive
主要就是用来控制物体的显隐,也就是物体在编辑器内 Inspector 中的小对勾,通过 gameobject.SetActive(bool); 来控制,新手在这里一定要注意,如果物体是通过 Find 的方式得到的,那 SetActive(false) 后有可能就找不到物体了,这时可以通过定义 public 变量用拖拽的方式 或者 transform.find 的方式得到物体进行操作。通过gameObject.selfActive 可以获取到物体当前的显隐状态。
OnEnable、OnDisable、OnDestroy
OnEnable():当对象变为可用或激活状态时该方法被调用
OnDisable():当对象变为不可用或非激活状态时该方法被调用
OnDestroy():当 MonoBehaviour 将被销毁时,这个方法被调用
Message 响应事件
启动与刷新方法:
启动:
Reset()
Awake()
Start()
刷新:
FixedUpdate()
Update()
LateUpdate()
交互方法:
物理:
OnTriggerEnter()
OnTriggerExit()
OnTriggerStay()
OnCollisionEnter()
OnCollisionExit()
OnCollisionStay()
OnControllerColliderHit()
OnJointBreak()
OnParticleCollision()
输入:
OnMouseEnter()
OnMouseOver()
OnMouseExit()
OnMouseDown()
OnMouseUp()
OnMouseDrag()
OnMouseUpAsButton()
渲染:
OnGui()
OnDrawGizmos()
OnDrawGizmosSelected()
OnPreCull()
OnPreRender()
OnPostRender()
OnRenderObject()
OnWillRenderObject()
OnRenderImage()
对象:
OnEnable()
OnDisable()
OnDestroy()
场景:
OnLevelWasLoaded()
程序:
OnApplicationPause()
OnApplicationFocus()
OnApplicationQuit()
网络:
OnPlayerConnected()
OnServerInitialized()
OnConnectedToServer()
OnPlayerDisconnected()
OnDisconnectedFromServer()
OnFailedToConnect()
OnFailedToConnectToMasterServer()
OnMasterServerEvent()
OnNetworkInstantiate()
OnSerializeNetworkView()
动画:
OnAnimatorMove()
OnAnimatorIK()
声音:
OnAudioFilterRead()
物理引擎与碰撞检测
BoxCollider 是一个碰撞体,如果勾选了 Is Trigger 那么它就成为了一个碰撞检测体,即该 BoxCollider不会产生物理碰撞,会有检测物体是否碰撞的功能。
Rigidbody 刚体,物体有了刚体便有了物理属性,比如重量、重力等等。负责进行物理运算。
Drag 阻尼系数
Use Gravity 是否受到重力影响
Is Kinematice 是否会被物理引擎驱动,勾选不会受到物理引擎驱动
InterPolate 计算插值
Collision Detection 碰撞检测频率
- Discrate 不连续检测
- Continuous 连续检测
- Continuous Dynamic 动态连续检测
牛顿第二定律: F = M * A
冲量公式:I = F * T = M * V T 为时间,即力将作用多久
ForceMode 里面有四种力分别是:
Acceleration (加速度)
Force(力)
Impulse(冲量)
VelocityChange
碰撞检测:
未勾选 Trigger
- Static Collider
- Rigidbody Collider
- Kinematic Rigidbody Collider
勾选 Trigger
- Static Trigger Collider
- Rigidbody Trigger Collider
- Kinematic Rigidbody Trigger Collider
去碰撞的一方也就是运动的一方如果要有碰撞效果是必须要有 rigidbody 的 而被碰撞的一方如果不需要检测碰撞是可以没有 rigidbody 的。
勾选Trigger
OnTrigger
OnTriggerEnter() 当 Collider(碰撞体)进入 Trigger(触发器)时调用
OnTriggerExit() 当 Collider(碰撞体)停止触发 Trigger(触发器)时调用
OnTriggerStay() 当碰撞体接触触发器时,将在每一帧被调用
未勾选 Trigger
OnCllision
OnCollisionEnter() 当此 Collider/rigidbody 触发另一个 rigidbody/collider 时被调用
OnCollisionExit() 当此 Collider/rigidbody 停止触发另一个 rigidbody/collider 时被调用
OnCollisionStay() 当此 Collider/rigidbody 停止触发另一个 rigidbody/collider 时,将会再每一帧被调用
Collision
contacts:接触点,当两物体碰撞时候可以计算出接触点