2011-12-19 3 views
2

안드로이드에서 Cocos2D를 사용하여 시차를 무한히 반복하고 싶습니다. 이제 Objective C에서이 문제에 대한 몇 가지 해결책이 있지만 Android에서의 구현이 잘못되었습니다. 나는 사용하려고 시도했다Android에서 Cocos2D를 사용하여 시차 반복

CCSprite background = CCSprite.sprite("background_island.png"); 
CCTexParams params = new CCTexParams(GL10.GL_LINEAR,GL10.GL_LINEAR,GL10.GL_REPEAT,GL10.GL_REPEAT); 
      background.getTexture().setTexParameters(params); 

그러나 단지 1 방향으로 배경을 확장한다. 제 생각에는 2 스프라이트를 사용해야하는데, 마치 1 등분이 끝나 자마자 다른 시작과 그 반대로 시작하지만 구현이 어려워졌습니다.

+0

는 아이폰 OS 플랫폼을 기반으로 책 '린적인 Cocos2D'이 아닌가? 여기 안드로이드를 찾고 있어요 –

답변

3

나는 똑같은 문제가 있었고 그것을 알아 냈습니다.

시도해보십시오. 배경을 선언하고 구성원으로 오프셋 : 장면의 생성자에서

CCSprite _bg; 
float _bgOffset; 

:

CGSize winSize = CCDirector.sharedDirector().displaySize(); 
_bg = CCSprite.sprite("yourbg.png"); // needs to be square, i.e. 256x256 
_bg.setTextureRect(0, 0, winSize.width, winSize.height, false); 
_bg.getTexture().setTexParameters(GL10.GL_LINEAR, GL10.GL_LINEAR, GL10.GL_REPEAT, 
     GL10.GL_REPEAT); 
_bg.setAnchorPoint(CGPoint.zero()); 
this.addChild(_bg); 

그리고 당신의 갱신 (플로트 DT) 방법 :

if (_bgOffset > 2000000000) 
    _bgOffset = 0; // don't want problems, do we? 
_bgOffset += dt * PIXELS_PER_SECOND; // this can be dynamic if you want 
_bg.setTextureRect(0, _bgOffset, _bg.getTextureRect().size.width, 
      _bg.getTextureRect().size.height, false); 

페이지의 "반복 배경" in http://www.raywenderlich.com/3857/how-to-create-dynamic-textures-with-ccrendertexture 목표 C 코드

두 가지 방법이 필요한 경우 아마도 0이 아닌 _bgOffset으로 시작하여 문제가 없는지 확인할 수 있습니다.

희망이 있으면 도움이됩니다.

+0

안녕하세요 올렉 바스케 비츠, 코드 주셔서 감사 ... 내가 그걸로 끝났어. 하지만 한 가지 문제에 직면 해 있습니다 ... 두 가지 사이에 약간의 차이가 있습니다 .bbg ..... 좀 더 지침을 줄 수 있습니까? – Kalpesh

+0

배경 스프라이트가 사각형인지 확인 하시겠습니까? –

+0

사각형이 아니지만 직사각형입니다. 하지만 움직이는 애니메이션으로 작업 해 주셔서 감사 드리며 작업이 완벽합니다. 그리고 나중에 당신의 생각으로 해낼 수있어서 고마워요. – Kalpesh

0

시차 수직 끝없는 배경 아래 링크를 확인하시기 바랍니다 : http://kalpeshsantoki.blogspot.in/2014/07/create-vertical-endless-parallax.html

CGSize winSize = CCDirector.sharedDirector().displaySize(); 

//I made graphics for screen 720*1200....so I made this dynamic scale to support multiple screens 
float sX = winSize.width/720.0f; 
float sY = winSize.height/1200.0f; 
background = CCVerticalParallaxNode.node(sX, sY, true); 

background.addEntity(1f, "background.png", 0); 
background.addEntity(3, "road_simple.png", winSize.width/2); 
background.addEntity(1.7f, "road_side.png", 0); 
addChild(background); 
관련 문제