【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();
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值