欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

子弹的实现

程序员文章站 2024-03-25 23:51:16
...

子弹的实现因为是 玩家也在用 敌人也在用 所以也是一个公共的类 那么怎么区别 这样的存在呢 其实很简单 在敌人和 玩家调用 这个子弹类的时候 调用子弹 类里的一个函数 这个 函数是这样的

bool Bullet::init() {
/*if (   ! cocos2d::Node::init)
{
	return false;
}*/

Tepy = HowBullets::player;
speek =500;
return true;

}

   void   Bullet::BulletInit(HowBullets t, Vec2 pos)
{
Tepy = t;
std::string  Path = "";
switch (Tepy)
{
case Bullet::HowBullets::none:
	break;
case Bullet::HowBullets::player:
	Path = "pic/bullet_player.png";break;
case Bullet::HowBullets::enemy1:
	Path = "pic/enemybullet1.png";
	dirmove = Vec2(0, -1);
	bullet = Sprite::create(Path);

	break;
case Bullet::HowBullets::enemy2:
	Path = "pic/enemybullet2.png";
	dirmove = Vec2(0, -1);
	bullet = Sprite::create(Path);
	
	break;
case Bullet::HowBullets::enemy3:
	Path = "pic/enemybullet3.png";
	dirmove = Vec2(0, -1);
	bullet = Sprite::create(Path);
	
	break;
case Bullet::HowBullets::special1:
	Path = "pic/texiao1.png";
	dirmove = Vec2(0, 1);
	bullet = Sprite::create(Path);

	break;
	case Bullet::HowBullets::special2:

		break;
	case Bullet::HowBullets::special3:

		break;
	case Bullet::HowBullets::special4:

		break;
	case Bullet::HowBullets::special5:

		break;

}
bullet->setTag(1);
bullet->setName("bullet1");
bullet->addComponent(physicsBody);      
bullet->setScale(0.5f);
this->addChild(bullet, 1);
this->setPosition(pos+Vec2(0,50));
auto contactListener = EventListenerPhysicsContact::create();
contactListener->onContactBegin = CC_CALLBACK_1(Bullet::onContactBegin1, this);

_eventDispatcher->addEventListenerWithSceneGraphPriority(contactListener, this);
scheduleUpdate();
}

这个就是子弹里的别的类调用的函数
这个类init的函数里就是用来做初始值得 这个函数 解决了 谁是谁的子弹 那个人调用了就用那个 人的子弹最后一个调用时让子弹行动的

void  Bullet::update(float  dt)
{Vec2 pos = this->getPosition();
pos += speek * dirmove*dt;
this->setPosition(pos);
if (this->getPositionY() > Director::getInstance()->getVisibleSize().height + 200) {

	this->removeFromParent();
}

然子弹移动下去 每个子弹都是每个个体的 移动 别的函数调动的时候怎么调用

auto bullet=Bullet::create()
bullet->BulletInit(Bullet::Howbullet::player,pos);
bullet->setScale(0.5f, 1.0f);
		this->addChild(bullet, 2);

这样就 OK了 做到这 那么敌人飞机子弹就全部完事了现在你们可以运行了 就都有了