2017-03-14 13 views

答えて

0

あなたは直線的に元の(デフォルト)値(タッチパッドによって設定された)特定の角度の間に船の回転を補間します。

私のコードであなたの要件を達成しようとしています。

public class TestGame1 extends Game { 

    Stage stage; 
    Touchpad touchpad; 
    Image image; 
    float angle=0; 
    Texture shipTex; 

    @Override 
    public void create() { 
     stage=new Stage(); 

     image=new Image(shipTex=new Texture("ship1.png")); 
     image.setPosition(300,300); 
     image.setSize(100,107); 
     image.setOrigin(50,53); 

     Skin skin=new Skin(Gdx.files.internal("skin/uiskin.json")); 
     touchpad=new Touchpad(10,skin); 
     touchpad.setPosition(100,100); 
     Gdx.input.setInputProcessor(stage); 

     stage.addActor(image); 
     stage.addActor(touchpad); 
    } 

    @Override 
    public void render() { 

     Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 
     Gdx.gl.glClearColor(0,0,0,1); 

     stage.act(); 
     stage.draw(); 

     float knobX=touchpad.getKnobPercentX(); 
     float knobY=touchpad.getKnobPercentY(); 

     if(knobX!=0 && knobY!=0) { 
      float radAngle = MathUtils.atan2(knobY, knobX); 
      angle = MathUtils.radiansToDegrees * radAngle; 
      angle -= 90; 

      if (angle > 360) 
       angle -= 360; 
     } 
     else 
      angle=MathUtils.lerpAngleDeg(angle,0,Gdx.graphics.getDeltaTime()); 

     image.setRotation(angle); 
    } 

    @Override 
    public void dispose() { 
     stage.dispose(); 
     shipTex.dispose(); 
    } 
} 
関連する問題