unity中碰撞事件的检测条件:
1) 两个游戏对象必须都有Collider碰撞器这个组件
2) 至少有一个游戏对象包含刚体组件
3) 两个游戏对象有相对运动
脚本控制Player移动
using UnityEngine;
public class PlayerMove : MonoBehaviour {
private Rigidbody rig_player;
// Use this for initialization
void Start () {
rig_player = GetComponent<Rigidbody>();
}
// Update is called once per frame
void Update () {
rig_player.AddForce(new Vector3(0, 0, 10));
}
//进入了碰撞区域触发一次
private void OnCollisionEnter(Collision collision)
{
if (collision.collider.name== "Cube (1)")
{
Debug.Log("碰到了");
}
}
//停留在碰撞区域持续触发
private void OnCollisionStay(Collision collision)
{
}
//离开碰撞区域触发一次
private void OnCollisionExit(Collision collision)
{
}
}
将脚本挂载至有刚体组件的移动对象(Player)
unity中触发事件的检测条件:
将碰撞体组件属性面板上的“Is Trigger”选项选中,当前的游戏物体的碰撞器就变成了触发器。
当一个用刚体控制的物体进入到另外一个物体的触发器范围内,就是触发事件。
using UnityEngine;
public class PlayerMove : MonoBehaviour {
private Rigidbody rig_player;
// Use this for initialization
void Start () {
rig_player = GetComponent<Rigidbody>();
}
// Update is called once per frame
void Update () {
rig_player.AddForce(new Vector3(0, 0, 10));
}
//进入触发区域时触发一次
private void OnTriggerEnter(Collider other)
{
if(other.name== "Cube (1)")
{
Debug.Log("触发了");
}
}
//停留在触发区域持续触发
private void OnTriggerStay(Collider other)
{
}
//离开触发区域时触发一次
private void OnTriggerExit(Collider other)
{
}
}
将脚本挂载至有刚体组件的移动对象(Player)
勾选触发器Is Trigger选型后,绿色的墙体无法阻止Player的前进,但是会在Player进入墙体的触发范围时,执行触发事件;
注意:碰撞事件和触发事件的脚本都是挂在有刚体组件的对象上的*