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 )
拿昨天做的飞机大战来当例子
![](http://unity.gopedu.com/data/attachment/album/201412/20/202613wjd4oav91s54oawg.png)
给子弹和飞机分别添加碰撞,当飞机被打中规定的次数后,飞机消失。
代码如下:这是其中让飞机消失,有关碰撞的一小段代码
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://unity.gopedu.com/data/attachment/album/201412/20/203924gteqsosyoholoksc.png)
这是给飞机和子弹添加刚体和碰撞时需要注意的。
更多精彩请点击 http://www.gopedu.com/article
碰撞检测
在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 )
拿昨天做的飞机大战来当例子
![](http://unity.gopedu.com/data/attachment/album/201412/20/202613wjd4oav91s54oawg.png)
给子弹和飞机分别添加碰撞,当飞机被打中规定的次数后,飞机消失。
代码如下:这是其中让飞机消失,有关碰撞的一小段代码
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://unity.gopedu.com/data/attachment/album/201412/20/203924gteqsosyoholoksc.png)
这是给飞机和子弹添加刚体和碰撞时需要注意的。
更多精彩请点击 http://www.gopedu.com/article
相关文章推荐
- Unity学习-碰撞检测(七)
- 【学习笔记】AS3 碰撞检测之像素检测
- AndEngine学习:CollisionDetectionExample(碰撞检测)
- cocos2d-x 菜鸟学习笔记十三(简单的碰撞检测)
- cocos2d-x 菜鸟学习笔记十七(简单的碰撞检测 实践篇 下)
- cocos2d-x 菜鸟学习笔记十六(简单的碰撞检测 实践篇 中)
- Flash游戏学习笔记:矩形检测碰撞
- [Unity 3D] Unity 3D 里的碰撞检测
- Unity学习笔记2:物理引擎和碰撞
- Unity学习笔记2:物理引擎和碰撞
- 【Unity 3D】碰撞检测
- AndEngine学习:PhysicsCollisionFiltering(有过滤器的碰撞检测)
- Unity学习系列笔记2:物理引擎和碰撞
- Unity鼠标抓取gameobject(类似碰撞检测)
- (转)[AndEngine学习教程] 第9节 CollisionDetection 实体碰撞检测
- “AS3.0高级动画编程”学习:第一章高级碰撞检测
- 关于unity3的中的碰撞检测
- cocos2d-x 2.X demo学习笔记 9 ----Touches 触摸事件 以及碰撞检测
- 学习cocos2d-x之路(6)--Tilemap的碰撞检测
- [Unity 3D] Unity 3D 里的碰撞检测