纳金网
标题:
Unity3D脚本教程7:碰撞描述类 collision
[打印本页]
作者:
markq
时间:
2012-3-8 15:56
标题:
Unity3D脚本教程7:碰撞描述类 collision
碰撞描述类 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 ) //一枚手榴弹,在击中一个表面时初始化一个爆炸预设,然后销毁它
{
var contact = collision . contact [ 0 ];
var rot = Quaternion . FromToRotation ( Vector3.up , contact . normal ) ;
var pos = contact . point ;
Instantiate ( explosionPrefab , pos , rot ) ;// 旋转这个物体使y轴面沿着表面法线的方向
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
ContactPoint 碰撞发生的接触点。接触点被存储在collision结构中,参见collision , collision . OnCollisionEnter, Collision . OnCollisionStay , Collision . OnCollisionExit.
变量
◆var normal : Vector3 // 描述:接触点的法线
◆var otherCollider : Collider // 描述:碰撞中的另一个碰撞器
◆var point : Vector3 // 描述:接触点
◆var thisCollider : Collider // 描述:碰撞中的第一个碰撞器
ControllerColliderHit 类
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 /// 描述:被控制器碰到的变换
作者:
彬彬
时间:
2012-3-8 17:19
定
欢迎光临 纳金网 (http://rs.narkii.com/club/)
Powered by Discuz! X2.5