您的位置:首页 > 移动开发 > Unity3D

Unity3D学习之(碰撞检测)

2014-12-20 15:50 471 查看
欢迎大家光临我的博客
一、碰撞检测
在unity3d中,能检测碰撞发生的方式有两种,一种是利用碰撞器,另一种则是利用触发器。这两种方式的应用非常广泛。
为了完整的了解这两种方式,我们必须理解以下概念:
1、碰撞器是一群组件,它包含了很多种类,比如:
Box Collider,Capsule Collider等,这些碰撞器应用的场合不同,但都必须加到GameObjecet身上。
2、所谓触发器,只需要在检视面板中的碰撞器组件中勾选IsTrigger属性选择框。
3、给主角添加刚体(Rigidbody)组件,并且取消刚体组件的重力选项UseGravity。
 
 
二、触发信息检测
1、当进入触发器
      MonoBehaviour.OnTriggerEnter( Collider other )
2、当退出触发器
      MonoBehaviour.OnTriggerExit( Collider other )
3、当逗留触发器
  MonoBehaviour.OnTriggerStay( Collider other )
 
①// 触发接触的那一帧被调用  
    void OnTriggerEnter(Collider other) {  
        Debug.Log("enter");  
        Debug.Log(other.gameObject.name);  
    }  
  
    ②//触发接触的每帧都被调用  
    void OnTriggerStay(Collider other) {  
        Debug.Log("Stay");  
    }  
  
    ③// 触发结束被调用  
    void OnTriggerExit(Collider other) {  
        Debug.Log("Exit");  
}  
 
 
三、碰撞信息检测
1、当进入碰撞器
      MonoBehaviour.OnCollisionEnter( Collision collisionInfo ) 
2、当退出碰撞器
      MonoBehaviour.OnCollisionExit( Collision collisionInfo ) 
3、当逗留碰撞器
     MonoBehaviour.OnCollisionStay( Collision collisionInfo )  
 
①// 碰撞接触的那一帧被调用  
    void OnCollisionEnter(Collision collision) {  
        Debug.Log("enter");  
        Debug.Log(collision.gameObject.name);  
    }  
  
    ②// 碰撞接触的每帧都被调用  
    void OnCollisionStay(Collision collision) {  
        Debug.Log("Stay");  
    }  
  
    ③// 碰撞结束被调用  
    void OnCollisionExit(Collision collision) {  
        Debug.Log("Exit");  
    }  
 
四、忽略碰撞
有些时候我们不想让指定的两对象发生碰撞,即要忽略他们的碰撞
 public Transform ball;   
    void Start() {  
         Physics.IgnoreCollision(ball.collider, this.collider);   
    } 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: