- 最后登录
- 2014-10-23
- 注册时间
- 2011-7-19
- 阅读权限
- 90
- 积分
- 81303
- 纳金币
- -1
- 精华
- 11
|
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将是所有附加碰撞器的变换。
|
|