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;