unity3d碰撞类

发表于 2012 年 6 月 13 日 pandaxiong168

collision类 描述碰撞 Collision 信息被传递到Collider . OnCollisionEnter , Collider . OnCollisionStay和Collider.OnCollisionExit事件。

参见:

ContactPoint. 变量

◆var collider : Collider 描述:碰撞到的Collider ( 只读 ). 为了得到所有被碰撞到的碰撞器的细节,你需要迭代接触点( contacts属性)。

◆var contacts : ContactPoint [ ] 描述:接触点由物理引擎产生。 每个contact包含一个接触点,法线和两个发生碰撞的碰撞器(参考ContactPoint)。在OnCollisionStay或者OnCollisionEnter内可以确保contacts有至少一个元素。 function OnCollisionStay ( collision : Collision ){ //检查碰到碰撞器是否有刚体 //然后使用一个力 for ( var contact : ContactPoint in collision . contacts ) { print ( contact.thisCollider . name + “hit” + contact . otherCollider .name ); //可视化接触点 Debug.DrawRay ( contact . point , contact . normal, Color .white ) ; } } //一枚手榴弹,在击中一个表面时初始化一个爆炸预设,然后销毁它 var explosionPrefab : Transform; function OnCollisionEnter( collision : Collision ){ //旋转这个物体使y轴面沿着表面法线的方向 var contact = collision . contact [ 0 ]; var rot = Quaternion . FromToRotation ( Vector3.up , contact . normal ) ; var pos = contact . point ; Instantiate ( explosionPrefab , pos , rot ) ; Destory ( gameObject );//销毁这个投射物 }

◆var gameObject : GameObject 描述:/ gameObject / 是与之碰撞的物体(只读)

◆var relativeVelocity : Vector3 描述: 两个碰撞物体的相对线形速度(只读)。 //当以较大的速度碰到一个物体时播放声音 function OnCllisionEnter ( collision : Collision ) { if ( collision . relativeVelocity . magnitude > 2 ) audio .Play ( ); }

◆var rigibody : Rigidbody 描述:碰撞到的Rigidbody(只读),如果碰到的物体是一个没有附加刚体的碰撞器,返回null //让所有碰到的刚体向上飞 function OnCollisionStay ( collision : Collision ) { //检查碰到的碰撞器是否有一个刚体 ,然后使用力 if ( collision . rigidbody ){ collision . rigidbody .AddForce ( Vector3 . up * 15 ) ; } }

◆var transform : Transform 描述:碰撞到的物体的Transform(只读)。 如果碰到一个带有Rigidbody的碰撞器,transform将是所有附加刚体的变换。如果碰到了一个没有刚体的碰撞器,transform将是所有附加碰撞器的变换。 附:用到的结构:ContactPoint结构 描述:碰撞发生的接触点。 接触点被存储在collision结构中,参见collision , collision . OnCollisionEnter, Collision . OnCollisionStay , Collision . OnCollisionExit. 变量

◆var normal : Vector3 描述:接触点的法线

◆var otherCollider : Collider 描述:碰撞中的另一个碰撞器

◆var point : Vector3 描述:接触点

◆var thisCollider : Collider? 描述:碰撞中的第一个碰撞器

ControllerColliderHit类(条件:CharacterController与其他物体碰撞时触发) ControllerColliderHit被CharacterController . OnControllerColliderHit使用来给出详细的关于碰撞和如何处理它们的信息。 变量

◆var collider : Collider 描述:被控制器碰到的碰撞器。

◆var controller : CharacterController 描述:碰到该碰撞器的控制器。

◆var gameObject : GameObject 描述:被控制器碰到的游戏物体。

◆var moveDirection : Vector3 描述:从胶囊的中心到接触点的大致方向。 这可以用来找到一个合理的方向将力应用到接触的刚体。

◆var moveLength : float 描述:角色碰到这个碰撞器时已经行走了多远。 注意这可能不同于你传递到CharacterController . Move的。因为所有的移动都是被碰撞器制约的。

◆var normal : Vector3 描述:在世界空间中碰撞表面的法线。

◆var point : Vector3 描述:世界空间中的碰撞点。

◆var rigidbody : Rigidbody 描述:被控制器碰到的刚体。 如果没有接触一个刚体而是一个静态碰撞器时为null。

◆var transform : Transform 描述:被控制器碰到的变换。

posted @ 2012-12-19 10:55  鲲鹏变  阅读(459)  评论(0)    收藏  举报