2011-12-19 6 views
2

Androidで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番目のフィニッシュが終わるとすぐに、もう1つのスプライトが始まります。逆も同様ですが、実装が残っています。

+0

は、iOSのプラットフォームに基づく簿「リーンCocos2D」はありませんか? 私はここでAndroidを探しています –

答えて

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コード

両方向に進む必要がある場合は、ゼロ以外の_bgOffsetで始まり、それが機能するかどうかを確認することができます。

これが誰かを助けることを願っています!

+0

こんにちはOleg Vaskevich、あなたのコードをありがとう...私はそれをしました。しかし、私は1つの問題に直面している...私は2つの間にいくつかのギャップがある_bg .....あなたはそれについていくつかの指針を与えることができますか? – 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); 
関連する問題