给单机游戏添加准备好的弹幕。直接上代码,作为一个记录:

GameLayer.h中声明控件和方法:

public:

virtual void update(float dt);//更新

void addDanmu(float dt);//添加弹幕

private:

Node * panel_danmu;//弹幕

float danmuRefushDelay;//弹幕时间


GameLayer.cpp中实现:

在init()中

//设置初始值

danmuRefushDelay = 0;

//获取弹幕字样的控件

panel_danmu = node->getChildByName("panel_danmu");

//启动update()

this->scheduleUpdate();


//在update()中调用添加弹幕方法  实时刷新准备好的弹幕

void GameLayer::update(float dt)
{
addDanmu(dt);
}

//添加弹幕
void GameLayer::addDanmu(float dt)
{
danmuRefushDelay += dt;

//每1.2秒截取一条弹幕
if (danmuRefushDelay > 1.2)
{
danmuRefushDelay = 0;
//auto danmu = Sprite::createWithTexture(GET_PLAYER_NAME("scroll_str.png"), Rect(0, (int)(CCRANDOM_0_1() * 50) * 20, 308, 20));

//从scroll_str.png中获取弹幕字样,并设置弹幕的坐标x,y和宽高

//CCRANDOM_0_1() 生成“随机数”的范围是 0 <= (float)x < 1
auto danmu = Sprite::create("scroll_str.png", Rect(0, (int)(CCRANDOM_0_1() * 50) * 20, 308, 20));
danmu->setPosition(Point(1200, 450 + (CCRANDOM_0_1() * 100)));

//设置弹幕的动画,从左到右,移出界面
danmu->runAction(Sequence::create(MoveBy::create(10, Point(-1500, 0)), CallFunc::create([danmu]{
danmu->removeFromParentAndCleanup(true);
}), NULL));

//在弹幕模块的位置添加弹幕字样
panel_danmu->addChild(danmu);
}

注意:准备一张带有写好的弹幕字样的图片,就是上面用到scroll_str.png。图片就是下面这张,因为是透明背景,白色的字,应该是一片白的,复制图片到桌面打开就能看到了。

cocos2dx添加虚拟弹幕cocos2dx添加虚拟弹幕


相关文章:

  • 2022-12-23
  • 2022-01-19
  • 2022-01-06
  • 2022-01-23
  • 2021-07-22
  • 2022-01-09
  • 2021-12-25
  • 2022-01-25
猜你喜欢
  • 2021-09-30
  • 2021-12-30
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案