ゲームの作り方を学ぶために、openGLトップダウンスペースシューティングタイプのゲームを作っています。私は多くの基本事項(ゲームループ、ロジック分離など)を持っています。
しかし、私が直面している問題の1つは、より複雑なオブジェクトの動きを作成する方法です。現在、画面を正弦波で移動している敵がいます。画面を下に移動したり、停止したり、再開したり、プロセスでループを実行したりするなど、より複雑な動きを実行してもらいたいと思います。
移動ロジックを、あらゆる種類の敵に接続できる独自のEnemyMovementインターフェイスに分割しました。これが私の正弦波運動クラスです:
package com.zombor.shooter.movement;
import com.zombor.game.framework.math.Vector2;
public class Sine implements EnemyMovement
{
private int direction;
private float totalTime = 0;
private float deltaTime;
private int originalX;
private int originalY;
private float yVelocity = -4f;
private float xVelocity = 0;
public Sine(int x, int y)
{
direction = Math.random() > 0.5 ? 1 : -1;
originalX = x;
originalY = y;
}
public void setDeltaTime(float deltaTime)
{
this.deltaTime = deltaTime;
totalTime+=deltaTime;
}
private float xVal()
{
return originalX + (float) Math.sin(Math.PI+totalTime)*2*direction;
}
public void setPosition(Vector2 position)
{
position.add(xVelocity * deltaTime, yVelocity * deltaTime);
position.x = xVal();
}
}
私のオブジェクトには、位置、速度、加速度のベクトルがあります。
スクリプト化された動きを行うための一般的に受け入れられている方法はありますか?