background image

cocos2d-x 如何检测碰撞

首先,跟踪怪物和子弹是必需的。

在游戏中,我们为这两种精灵加以不同的

tag 来区分它们。当 tag=1 时,表示这是怪物,

tag=2 时,则表示这为子弹。由于在 CCNode 里面有 m_nTag 这个成员变量,并且有 setTag

getTag 方法,因此 CCSprite 就继承了这些方法,我们可以利用之。

HelloWorldScene.h 中,把以下两个成员变量加入到 HelloWorld 下,这两个成员变量

用于缓存现有的怪物和子弹。

1// cpp with cocos2d-x

2protected:

3 cocos2d::CCMutableArray *_targets;

4 cocos2d::CCMutableArray *_projectiles;

1// objc with cocos2d-iphone

2 NSMutableArray *_targets;

3 NSMutableArray *_projectiles;

cocos2d-x 里,CCMutableArray 相当于 iOS SDK 中的 NSMutableArray,该数组里的

成员可以是

NSObject 或者他们的子类。但不同的是,你必须告诉它里面要放的是哪种具体

的类型。

之后构造函数中初始化这两个变量,在

init()中 new 它们,并在析构函数中 release 它们。

1// cpp with cocos2d-x

2

3// in init()

4// Initialize arrays

5_targets = new CCMutableArray;