我们今天来学习关于cocos2dx 3.3的口袋空战3 敌人层,敌人也有自己的动作,也定义为Sprite类也需要做碰撞检测,故设置物理属性
敌人不断地从屏幕右端移到左端,用MoveTo实现敌人素材:
代码:
Enemy.h#include “cocos2d.h”
USING_NS_CC;
class Enemy : public Sprite
{
public:
//通过随机设定Y轴坐标,初始化精灵球位置
virtual bool init(float positionY);
static Enemy* create(float positionY);
//精灵球精灵
Sprite *enemy;
//记录初始化Y轴位置
float p;
//记录屏幕大小
Size size;
//移除精灵球精灵
void rm();
};
Enemy.cpp
#include “Enemy.h”
USING_NS_CC;
Enemy* Enemy::create(float positionY)
{
Enemy *e = new Enemy();
e->init(positionY);
e->autorelease();
return e;
}
bool Enemy::init(float positionY)
{
Sprite::init();
size = Director::getInstance()->getVisibleSize();
p = positionY;
srand(time(NULL));
int i = rand()%3;
switch (i)
{
case 0:
{
enemy = Sprite::create(“e1.png”);
break;
}
case 1:
{
enemy = Sprite::create(“e2.png”);
break;
}
case 2:
{
enemy = Sprite::create(“e3.png”);
break;
}
}
enemy->setPosition(Point(size.width-50,p));
enemy->setPhysicsBody(PhysicsBody::createBox(enemy->getContentSize()));
enemy->getPhysicsBody()->setContactTestBitmask(1);
enemy->getPhysicsBody()->setTag(3);
enemy->runAction(Sequence::create(MoveTo::create(0.5f,Point(10,p)),CallFuncN::create(CC_CALLBACK_0(Enemy::rm,this)),NULL));
addChild(enemy);
return true;
}
void Enemy::rm()
{
enemy->removeFromParent();
}