gpt4 book ai didi

xcode - Cocos2D 垂直滚动背景

转载 作者:行者123 更新时间:2023-12-05 00:38:32 28 4
gpt4 key购买 nike

我有三个图像 (320x480),我试图在我的 Cocos2D 应用程序中垂直滚动它们。

在我的初始化方法中,我有以下内容:

//adding background sprites
background = [CCSprite spriteWithFile:@"BG1.png"];
background2 = [CCSprite spriteWithFile:@"BG2.png"];

//position background sprites
background.position = ccp(size.width, size.height/2);
background2.position = ccp(size.width, size.height*2);

//schedule to move background sprites
[self schedule:@selector(scroll:)];

//adding them to the main layer
[self addChild:background z:0];
[self addChild:background2 z:0];

这是我的滚动方法:
-(void) scroll:(ccTime)dt 
{
//move 30*dt px vertically
background.position = ccp(background.position.x, background.position.y - 30*dt);
background2.position = ccp(background2.position.x, background.position.y - 30*dt);

//reset offscreen position
if (background.position.y < 290)
{
background.position = ccp(480/2, 480);
}else if (background2.position.y < 290)
{
background2.position = ccp(480/2,480);
}
}

目前发生的事情是我的第一个背景图像偏移了大约四分之一屏幕(水平),它从屏幕底部向上四分之一处开始,但它向下滚动。我的第二个背景图像实际上并没有产生,第一个图像只是在偏移时一遍又一遍地循环。有什么方法可以让两张图片在背景中连续平滑循环,我将如何合并第三张图片?

另外,只是一个快速的附带问题,用名称中的数字命名对象(我认为它们是对象)是否不好(即背景2/背景3)?

最佳答案

在横向模式下测试水平滚动(您所要做的就是将滚动从水平更改为垂直,您应该能够弄清楚这一点)不要忘记 ccposition 来自 Sprite 的中间,而不是从 0,0 角度。 ..:

    CGSize size = [CCDirector sharedDirector].winSize;

//adding background sprites
background = [CCSprite spriteWithFile:@"tracktest.png"];
background2 = [CCSprite spriteWithFile:@"tracktest.png"];
[background.texture setAliasTexParameters];
[background2.texture setAliasTexParameters];

//position background sprites
background.position = ccp(background.contentSize.height/2,background.contentSize.width/2);
background2.position = ccp(size.width,0);

//schedule to move background sprites
[self schedule:@selector(scroll:)];

//adding them to the main layer
[self addChild:background z:0];
[self addChild:background2 z:0];

-滚动方法:
-(void) scroll:(ccTime)dt 
{
//move 30*dt px vertically
if (background.position.x<background2.position.x){
background.position = ccp(background.position.x - 30*dt,background.contentSize.height/2);
background2.position = ccp(background.position.x+background.contentSize.width,background2.contentSize.height/2);
}else{
background2.position = ccp(background2.position.x- 30*dt,background2.contentSize.height/2);
background.position = ccp(background2.position.x+background2.contentSize.width ,background.contentSize.height/2);

}

//reset offscreen position
if (background.position.x <-background.contentSize.width/2)
{
background.position = ccp(background2.position.x+background2.contentSize.width,background.contentSize.width/2);
}else if (background2.position.x < -background2.contentSize.width/2)
{
background2.position = ccp(background.position.x+background.contentSize.width, background2.contentSize.width/2);
}
}

关于xcode - Cocos2D 垂直滚动背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5474300/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com