cocos2d-x 游戏创作过程(五)
- 制作 一个全功能的 敌人 类。
- 制作一个Dialog,显示 得到的物体。
- 制作类子弹类。 便于切换子弹。
- 然后根据得到的物体,进行武器切换,和骨骼的切换。
- 控制敌人,和 主角的血量,和删除敌人。
- 炸弹的定时,与爆破。
有些时候感觉,坑多多。 但是现在一一突破了,真不容易。现在要真的写皮肤了和音乐了,要不然,用官方网站的皮肤,根本就是给人以幼儿园的感觉。
一个全功能的敌人 类
根据瓦片地图的属性,是确定 敌人类的属性。 现在我做到的是,瓦片地图的对象图层,中去创建很多属性,然后读写出来放在一个实体类里。然后再把实体类加载到 敌人类里。 然后敌人类会根据不同的属性,发挥不同的特性。
//PropertyData 实体类 //EnemyRole 是一个继承了Sprite的类 bool EnemyRole::init(PropertyData *property, b2Body *body, std::string str){ // auto spriteA = Sprite::create("BoxA2.png"); propertyData=property; this->body=body; this->setAnchorPoint(ccp(0.5,0.5)); this->setTexture(property->getImage()); this->setTag(property->getID()); b2PolygonShape dynamicBox; dynamicBox.SetAsBox(1,1); this->setCameraMask((unsigned short) CameraFlag::USER1); propertyData->setImage(property->getImage()); propertyData->setID(property->getID()); body->SetUserData(this); int tags = this->getTag(); //根据tags的不同判断不同瓦片的特性 if( tags==39){ sprite_title1 = Sprite::create("title.png"); sprite_title1->setScaleX(0.8); sprite_title1->setScaleY(0.3); sprite_title1->setAnchorPoint(ccp(0.0,0.0)); sprite_title1->setPosition(this->getPositionX()-40,this->getPositionY()+80); sprite_title1->setCameraMask((unsigned short)CameraFlag::USER1); this->addChild(sprite_title1,10); this->schedule(schedule_selector(EnemyRole::update)); }