トゥイーンのようなアニメーションを実装する方法を考えるのは苦労しています。たとえば、deltaXだけを置くcurrentX + 3に移動し、残りは補間されます。私は今のところ持っている:ゲームオブジェクトのxとyの値を変更することにより、アニメーションOpenGLでのアニメーションの実装
public void onDrawFrame(GL10 gl) {
endingTime = System.currentTimeMillis();
int timeElapsed = (int) (endingTime - startingTime);
if (timeElapsed < FRAMEDURATION_MILISEC) {
try {
Thread.sleep(FRAMEDURATION_MILISEC - timeElapsed);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
startingTime = System.currentTimeMillis();
Game.renderGame(gl);
}
AND論理スレッド、:描画時間を追跡し、フレームレートを扱う
描画/ OpenGLのスレッド、 :
static long RATE = 30l; // times
static long duration = 1000l/RATE;
public void run() {
lastUpdate = System.currentTimeMillis();
long dur = duration; // copy
while (Game.running) {
long tElapsed = System.currentTimeMillis() - lastUpdate;
if (tElapsed >= dur) {
lastUpdate = System.currentTimeMillis();
Game.updateGame(tElapsed);
} else {
try {
GameLogicThread.sleep(dur - tElapsed);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
私は、私は、例えばゲームオブジェクトのためのxの違いを設定し、その位置が更新されるように、ゲームオブジェクトにこのアニメーションオブジェクトを適用し、いずれかの図面の可能性がアニメーションクラスを実装したかったですまたはロジックループを使用します。
私はこれをどこで行うべきか、まったくきれいな構造を保つ方法を知りません。誰か助けてくれますか?
EDIT:
おかげで、私は今あなたがdScaleなどをdX、dYを、dRotationを渡すことができますしている、GLAnimationクラスを作ったそれは、オブジェクトがPERを変更する必要が速度を算出し、ミリ秒。このAnimationオブジェクトの呼び出しはGameObjectに適用されるため、updateとrenderの呼び出しはtimeElapsedを渡してオブジェクトを移動できます。ありがとうzmccord!