加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

添加无尽的视差背景在cocos2d android

发布时间:2020-12-14 17:28:03 所属栏目:百科 来源:网络整理
导读:我正在工作的CoCos2d与android.I想添加一个无尽的滚动背景到我的屏幕使用CCParallaxNode。 我可以添加背景和移动它,但完成后,该动作的屏幕变黑。 有人可以帮我吗? 我的代码是 CCParallaxNode parallaxNode;CCSprite spacedust1;CCSprite spacedust2;CCSpr
我正在工作的CoCos2d与android.I想添加一个无尽的滚动背景到我的屏幕使用CCParallaxNode。
我可以添加背景和移动它,但完成后,该动作的屏幕变黑。
有人可以帮我吗?

我的代码是

CCParallaxNode parallaxNode;
CCSprite spacedust1;
CCSprite spacedust2;
CCSprite planetsunrise;
CCSprite galaxy;
CCSprite spacialanomaly;
CCSprite spacialanomaly2;

parallaxNode = CCParallaxNode.node();

    spacedust1 = CCSprite.sprite("bg_front_spacedust.png");
    spacedust2 = CCSprite.sprite("bg_front_spacedust.png");
    planetsunrise = CCSprite.sprite("bg_planetsunrise.png");
    galaxy = CCSprite.sprite("bg_galaxy.png");
    spacialanomaly = CCSprite.sprite("bg_spacialanomaly.png");
    spacialanomaly2 = CCSprite.sprite("bg_spacialanomaly2.png");
    // 3) Determine relative movement speeds for space dust and background
    // CGPoint cgPoint = CGPoint.ccp(0.1,0.1);

    CGPoint dustSpeed = CGPoint.ccp(10,10);
    CGPoint bgSpeed = CGPoint.ccp(5,5);
    // CGPoint bgSpeed = ccp(0.05,0.05);

    parallaxNode.addChild(spacedust1,dustSpeed.x,dustSpeed.y,winSize.height / 2);
    parallaxNode.addChild(spacedust2,spacedust1.getContentSize().width,winSize.height / 2);
    parallaxNode.addChild(galaxy,-1,bgSpeed.x,bgSpeed.y,10);
    parallaxNode.addChild(planetsunrise,600,5);
    parallaxNode
            .addChild(spacialanomaly,900,20);
    parallaxNode.addChild(spacialanomaly2,1500,30);
    CCIntervalAction go = CCMoveBy.action(4,CGPoint.ccp(winSize.width,0));
    CCIntervalAction goBack = go.reverse();
    CCIntervalAction seq = CCSequence.actions(go,goBack);
    CCRepeatForever action = CCRepeatForever.action(goBack);
    parallaxNode.runAction(action);
我看到,因为没有一个单一的答案为你工作。我将提供一个简单的代码,将帮助您为您的parralax滚动背景。

在游戏图层构造函数中添加此代码

background1 = CCSprite.sprite("bg2.png");
background2 = CCSprite.sprite("bg2.png");

background1.setPosition(CGPoint.ccp(winSize.width*0.5f,winSize.height*0.5f));
addChild(background1);

background2.setPosition(CGPoint.ccp(winSize.width+winSize.width*0.5f,winSize.height*0.5f));
addChild(background2);

和每毫秒调度的滚动方法。
在构造函数中添加

this.schedule("scroll");

现在滚动方法。

public void scroll(float dt) {

    CGPoint pos1 = background1.getPosition();
    CGPoint pos2 = background2.getPosition();

    pos1.x -= 5.0f;
    pos2.x -= 5.0f;

    if(pos1.x <=-(winSize.width*0.5f) )
    {
        pos1.x = pos2.x + winSize.width;
    }

    if(pos2.x <=-(winSize.width*0.5f) )
    {
        pos2.x = pos1.x + winSize.width;
    }

    background1.setPosition(pos1);
    background2.setPosition(pos2);


}

标记我的答案如果它的工作。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读