AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > Unity3D

Unity 2D 坦克游戏教程(7):碰撞处理

51自学网 2014-05-24 http://www.51zixue.net

在2D里的碰撞处理非常繁琐,十分容易出错导致最终全部搞砸,所以进行过程中要谨慎。

本文将涉及:

  • 对2D对象添加碰撞
  • 通过碰撞将对象移除或毁坏

战争开始!

为了接下来的一步,我已重新布置了游戏场景,将之前的参差不平的地面换成平的。为了节省时间,只需下载链接程序,然后按照其中的指导进行使用即可。这一地面其实就是一个载有碰撞盒子的灰色精灵。

要想检验碰撞,我们需要用到下一场景添加的标签。将碰撞器转换成触发器,使之可以被物理引擎所忽视,也会阻止触发器与其他物体发生碰撞。要确保我们的Alien’s Circle Collider 2D已经按照如下所示设置成为触发器。

注意,我也加了一个Rigidbody 2D(确保碰撞器与触发器良好协作所必须的),将重力水平设置为0是为了防止不必要的逻辑运动。

接下来,将AlienController的代码更新成下文所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
using UnityEngine;
using System.Collections;
 
public class AlienController : MonoBehaviour {
 
public float alienSpeed = .02f;
 
// Use this for initialization
void Start () {
 
}
 
// Update is called once per frame
void Update () {
transform.position += new Vector3(0, -alienSpeed, 0);
}
 
void OnTriggerEnter2D(Collider2D col)
{
// If the alien hits the trigger...
if (col.gameObject.tag == "Player") {
Destroy (gameObject);
} else if (col.gameObject.tag == "Terrain") {
Destroy (gameObject);
}
}
 
}

通过增加2D触发器入口功能,我们可以阻止一切进入外来飞船所占领空间的碰撞器。然后,我们可以检查这些碰撞器的标签,按照指令将飞船进行摧毁。

注意:我一直以为触发器以及碰撞存在问题,直到我看到一些我预先设想程序上的Z-值无法正常工作,我才明白问题所在。因为如果在2D的环境下,如果你想要引发碰撞,必须保证Z-值相同。如果你的对象仍然无法碰撞,请再次检查一下,看看它们是否在同一架飞机上。

效果图如下所示:

原文链接:http://www.unit3y.com/unity-2d-tank-game-part-vii-handling-collisions/


建议使用电驴(eMule)下载分享的资源。

说明
:本教程来源互联网或网友分享或出版商宣传分享,仅为学习研究或媒体推广,51zixue.net不保证资料的完整性。
 
上一篇:Unity 2D 坦克游戏教程(6):预制件和标签  下一篇:Unity 2D 坦克游戏教程(8):GUIText 基本UI