こんにちは、andengine を使用してゲームを開発しています。現在、スプライトを OnScreenAnalogController で回転させたいと考えています。初期化しましたが、残りの作業を行う方法がわかりません。サンプルコードなどは大歓迎です。
前もって感謝します。
PS Rotation は、スプライトの軸を中心にする必要があります。そして、コントローラーを離すと、スプライトが最初の方向ではなく、回転した方向に向くようにします。
こんにちは、andengine を使用してゲームを開発しています。現在、スプライトを OnScreenAnalogController で回転させたいと考えています。初期化しましたが、残りの作業を行う方法がわかりません。サンプルコードなどは大歓迎です。
前もって感謝します。
PS Rotation は、スプライトの軸を中心にする必要があります。そして、コントローラーを離すと、スプライトが最初の方向ではなく、回転した方向に向くようにします。
このコードを使用して解決策を見つけました
mAnalogController = new AnalogOnScreenControl(90, cameraHeight - 130, mCamera, mControllerTextureRegion, mKnobTextureRegion, 0.01f, getVertexBufferObjectManager(), new IAnalogOnScreenControlListener(){
@Override
public void onControlChange(
BaseOnScreenControl pBaseOnScreenControl, float pValueX,
float pValueY) {
//rect.registerEntityModifier(new RotationByModifier(0.5f, MathUtils.radToDeg((float) Math.atan2(-pValueX, pValueY))));
rect.registerEntityModifier(new RotationModifier(0.1f, rect.getRotation(), MathUtils.radToDeg((float) Math.atan2(pValueX, -pValueY))));
}
@Override
public void onControlClick(
AnalogOnScreenControl pAnalogOnScreenControl) {
// TODO Auto-generated method stub
}
});
唯一のことは、コントローラーを放すと、最初の位置に戻って回転することです。これは私が望んでいるものではありません。どうすればそれができるかについてのアイデアはありますか?
スプライトの回転については、applyRotation() メソッドをオーバーライドします ->
Sprite sprite = new Sprite(0, 0, textureRegionForMySprite, getVertexBufferObjectManager()){
@Override
protected void applyRotation(GLState pGLState) {
pGLState.rotateModelViewGLMatrixf(this.mRotation, 0, 1, 0);
}
};