查看: 2438|回复: 1
打印 上一主题 下一主题

Unity3D脚本教程7:碰撞描述类 collision

[复制链接]
markq    

511

主题

1

听众

1万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
15839
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2012-3-8 15:56:31 |只看该作者 |倒序浏览
碰撞描述类 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  ///    描述:被控制器碰到的变换
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

797

主题

1

听众

1万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
5568
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

沙发
发表于 2012-3-8 17:19:39 |只看该作者
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-10 16:34 , Processed in 0.090785 second(s), 33 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部