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

Unity学习之碰撞检测

2014-12-20 20:48 330 查看
unity学习,希望我的博客能给正在学习unity的朋友们带来帮助




碰撞检测



在unity3d中,能检测碰撞发生的方式有两种,一种是利用碰撞器,另一种则是利用触发器。这两种方式的应用非常广泛。

(一)碰撞器是一群组件,它包含了很多种类,比如:Box Collider,Capsule Collider等,这些碰撞器应用的场合不同,但都必须加到GameObjecet身上。

(二)所谓触发器,只需要在检视面板中的碰撞器组件中勾选IsTrigger属性选择框。

(三)给主角添加刚体(Rigidbody)组件,并且取消刚体组件的重力选项UseGravity。

触发信息检测

    1、当进入触发器:MonoBehaviour.OnTriggerEnter( Collider other )

    2、当退出触发器:MonoBehaviour.OnTriggerExit( Collider other )

    3、当逗留触发器:MonoBehaviour.OnTriggerStay( Collider other )

碰撞信息检测

    1、当进入碰撞器:MonoBehaviour.OnCollisionEnter( Collision collisionInfo ) 

    2、当退出碰撞器:MonoBehaviour.OnCollisionExit( Collision collisionInfo ) 

    3、当逗留碰撞器:MonoBehaviour.OnCollisionStay( Collision collisionInfo ) 

拿昨天做的飞机大战来当例子





给子弹和飞机分别添加碰撞,当飞机被打中规定的次数后,飞机消失。

代码如下:这是其中让飞机消失,有关碰撞的一小段代码

void OnTriggerEnter(Collider col)//当进入触发器
    {

        if (col.tag == "EnemyRocket")

        {

            lifeTime--;

            print(lifeTime);

            if (lifeTime <= 0)

            {

                Destroy(this.gameObject);

            }

        }
        if (col.tag == "Enemy")

        {

            Destroy(this.gameObject);

        }

    }

其中一定要给飞机和子弹加上刚体和碰撞器,不然是不会出现效果的:





这是给飞机和子弹添加刚体和碰撞时需要注意的。

更多精彩请点击 http://www.gopedu.com/article
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息