网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
07月25日漏签0天
zxc852905168吧 关注:13贴子:63
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 6回复贴,共1页
<<返回zxc852905168吧
>0< 加载中...

通过继承Sprite创建精灵动画

  • 只看楼主
  • 收藏

  • 回复
  • zxc852905168
  • 铁杆吧友
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
使用静态工厂设计模式,例程为cocos2dx实战的迷失航线代码


  • zxc852905168
  • 铁杆吧友
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include "Enemy.h"
USING_NS_CC;
Enemy::Enemy(EnemyTypes enemyType)
{
this->enemyType = enemyType;
this->initialHitPoints = 1;
this->velocity = Vec2::ZERO;
}
Enemy* Enemy::createWithEnemyTypes(EnemyTypes enemyType)
{
Enemy *enemy = new Enemy(enemyType);
const char* enemyFramName = Enemy_Stone;
switch (enemyType) {
case EnemyTypeStone:
enemyFramName = Enemy_Stone;
enemy->initialHitPoints = 3;
break;
case EnemyTypeEnemy1:
enemyFramName = Enemy_1;
enemy->initialHitPoints = 5;
break;
case EnemyTypeEnemy2:
enemyFramName = Enemy_2;
enemy->initialHitPoints = 10;
break;
case EnemyTypePlanet:
enemyFramName = Enemy_Planet;
enemy->initialHitPoints = 15;
break;
}
if (enemy && enemy->initWithSpriteFrameName(enemyFramName)) {
enemy->autorelease();
auto body = PhysicsBody::create();
if (enemyType == EnemyTypeStone || enemyType == EnemyTypePlanet) {
body->addShape(PhysicsShapeCircle::create(enemy->getContentSize().width / 2 - 5));
} else if (enemyType == EnemyTypeEnemy1) {
Vec2 verts[] ={
Vec2(-2.5,-45.75),
Vec2(-29.5,-27.25),
Vec2(-53, -0.25),
Vec2(-34,43.25),
Vec2(28, 44.25),
Vec2(55,-2.25)};
body->addShape(PhysicsShapePolygon::create(verts ,6));
} else if (enemyType == EnemyTypeEnemy2) {
Vec2 verts[] ={
Vec2(1.25, 32.25),
Vec2(36.75, -4.75),
Vec2( 2.75, -31.75),
Vec2(-35.75,-3.25)};
body->addShape(PhysicsShapePolygon::create(verts, 4));
}
body->setCategoryBitmask(0x01);//0001
body->setCollisionBitmask(0x02);//0010
body->setContactTestBitmask(0x01);
enemy->setPhysicsBody(body);
enemy->setVisible(false);
enemy->spawn();
enemy->unscheduleUpdate();
enemy->scheduleUpdate();
return enemy;
}
CC_SAFE_DELETE(enemy);
return nullptr;
}
void Enemy::update(float dt)
{
//设置陨石和行星旋转.
switch (enemyType) {
case EnemyTypeStone:
this->setRotation(this->getRotation() - 0.5);
break;
case EnemyTypePlanet:
this->setRotation(this->getRotation() + 1);
break;
}
Vec2 moveLen = velocity * dt;
this->setPosition(this->getPosition() + moveLen);
if (this->getPosition().y + this->getContentSize().height /2 < 0) {
this->spawn();
}
}
void Enemy::spawn()
{
Size screenSize = Director::getInstance()->getVisibleSize();
float yPos = screenSize.height + this->getContentSize().height /2 ;
float xPos = CCRANDOM_0_1()*(screenSize.width - this->getContentSize().width) + this->getContentSize().width / 2;
this->setPosition(Vec2(xPos, yPos));
this->setAnchorPoint(Vec2(0.5f,0.5f));
hitPoints = initialHitPoints;
this->setVisible(true);
}


2025-07-25 05:46:27
广告
不感兴趣
开通SVIP免广告
  • zxc852905168
  • 铁杆吧友
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
其中initWithSpriteFrameName(enemyFramName)中enemyFramName只能通过纹理缓存获得


  • zxc852905168
  • 铁杆吧友
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
异步纹理缓存如下
bool myscene::init()//与h中包住init的那个类同名
{
if (!Layer::init())
{
return false;
}
Vec2 origin = Director::getInstance()->getVisibleOrigin();
//载入地图背景
Director::getInstance()->getTextureCache()->addImageAsync("texture/gameplay_texture.png",
CC_CALLBACK_1(myscene::loadingTextureCallBack, this));
return true;
}


  • zxc852905168
  • 铁杆吧友
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
加载完成回调函数
void myscene::loadingTextureCallBack(Texture2D *texture)
{
SpriteFrameCache::getInstance()->addSpriteFramesWithFile("texture/gameplay_texture.plist", texture);
auto scene = GamePlayLayer::createScene();
Director::getInstance()->replaceScene(scene);
}


  • zxc852905168
  • 铁杆吧友
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
当时把auto scene = GamePlayLayer::createScene();
Director::getInstance()->replaceScene(scene);
写在myscene::init()中会出现报错Spriteframe=!nullptr(不知道怎么拼)
要写loadingTextureCallBack(Texture2D *texture)中。
因为加载"texture/gameplay_texture.plist"还没有完成


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 6回复贴,共1页
<<返回zxc852905168吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示