触发信息检测:
1.MonoBehaviour.OnTriggerEnter( Collider other )当进入触发器
2.MonoBehaviour.OnTriggerExit( Collider other )当退出触发器
3.MonoBehaviour.OnTriggerStay( Collider other )当逗留触发器
碰撞信息检测:
1.MonoBehaviour.OnCollisionEnter( Collision collisionInfo ) 当进入碰撞器
2.MonoBehaviour.OnCollisionExit( Collision collisionInfo ) 当退出碰撞器
3.MonoBehaviour.OnCollisionStay( Collision collisionInfo ) 当逗留碰撞器
transform.TransformDirection();方法能够得到主角移动时面朝的方向。
要注意的是一定要将脚本与主角相关联
public class Script_06_06 : MonoBehaviour { //角色控制器对象 private CharacterController controller = null; //角色的移动的速度 private float moveSpeed = 3.0f; //角色的旋转速度 private float rotateSpeed = 3.0f; void Start() { //获取角色控制器对象 controller = GetComponent<CharacterController>(); } void OnGUI() { //控制角色旋转 if(GUILayout.RepeatButton("向左旋转")) { transform.Rotate(0,-rotateSpeed, 0); } if(GUILayout.RepeatButton("向右旋转")) { transform.Rotate(0,rotateSpeed, 0); } //控制角色移动 if(GUILayout.RepeatButton("向前移动")) { Vector3 forward = transform.TransformDirection(Vector3.forward); controller.Move(forward*moveSpeed); } if(GUILayout.RepeatButton("向后移动")) { Vector3 forward = transform.TransformDirection(Vector3.forward); controller.Move( forward*-moveSpeed); } //控制角色飞行与降落 if(GUILayout.RepeatButton("起飞")) { transform.Translate(0, 1, 0); } if(GUILayout.RepeatButton("降落")) { transform.Translate(0, -1, 0); } } }
碰撞检测回调的方法。
void OnControllerColliderHit(ControllerColliderHit hit) { colliderobj = hit.gameObject; Debug.Log("zzzz"+colliderobj.name); }
下面碰撞后作出的反应。写在OnGUI()函数中
if(controller.collisionFlags == CollisionFlags.Sides) { Debug.Log("ccccc"); if(colliderobj != null){ GUI.Label(new Rect(200,100,200,100),"CollisionObject:"+ colliderobj.name); } Debug.Log("4444ccccc"); }