2017-01-05 11 views
0

オブジェクトの出し入れを容易にしようとしています。Slick2DでJavaを緩和する

しかし、これをレンダリングするとうまくいくが、私はいつも他のオブジェクトが他のオブジェクトと直接正反対の動作をする。

オブジェクトが見出しを上回っているとき、「ゴースト」オブジェクトは、直接反対の見出しになります。それはむしろ奇妙な画面の引き裂き効果を与えます。私はvsyncを有効にしようとしましたが、それはそれを悪化させるようでした。オブジェクトはslick2d長方形です。それはまた、数秒間完全に消えていく習慣もあります。あるいは、私がいなくても、次元が変わるごとに永久に直線に変わることさえあります。 これは更新コードです。

@Override 
public void update(GameContainer gc, StateBasedGame game, int delta) throws SlickException { 
    // TODO Auto-generated method stub 

    Input i=gc.getInput(); 
    d=2000/delta; 
    if(i.isKeyDown(Input.KEY_DOWN)){ 
     if(frames<d) 
     frames++; 

     if(frames==1)b=hele.getY(); 
     hele.setY(Quad.easeInOut(frames, b, 720-b-50, d));//the 50 is the size of the sprite 
     //c+=10; 
    } 
    else if(i.isKeyDown(Input.KEY_UP)){ 
     if(frames<d) 
     frames++; 

     if(frames==1)b=hele.getY(); 
     hele.setY(Quad.easeInOut(frames, b, -b, d)); 

    } 



} 

アウト式での容易さは、githubの上hereを見つけることができます。

キーが別の場所にリリースされると、フレームがリセットされます。私はスプライトをヘリコプターのように振舞わせようとしています。あなたがそれをより多くのヘリコプターにする方法があれば、あなたの知識を共有してください!

答えて

0

私はこの問題を発見したようですが、更新するたびにデルタを更新すると画面が裂けます!それを一定に保つことで問題を解決できます。代わりに私が代わりにデルタタイマーを使用したフレーム数を使用しての

...デルタを使用して時間を追跡し、私はフレームを使用し、すべての場所のために、私は、経過時間に置き換え

if(elapsedtime<d) 
       elapsedtime+=delta; 

if(frames==1){b=getCBox().getY();} 
      getCBox().setY(Bounce.easeOut(elapsedtime, b, 720-b-getCBox().getHeight(), d)); 

しかし、デルタの最初の更新を識別するためにフレームカウントを使用しても、必ずしも信頼できるとは限りません。

完全なソースは、ここではgitに見つけることができます:https://bitbucket.org/BallisticBlaze/helirush-game/

が、これは誰にもお役に立てば幸いです。

+0

自己回答はまったく問題ありませんが、更新されたコードで説明する内容を説明できますか? – Gimby

+0

さて、私は将来それを確実にするつもりです – BallisticBlaze

関連する問題