-1

ゲームの作り方を学ぶために、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();
  }
}

私のオブジェクトには、位置、速度、加速度のベクトルがあります。

スクリプト化された動きを行うための一般的に受け入れられている方法はありますか?

4

2 に答える 2

0

スクリプト化された動きの場合、加速せずに速度と位置のみを使用する方が簡単な場合があります。また、ゲームエンジンを使用していますか?車輪の再発明ではなく、AndEngineのようなものをお勧めします。

于 2012-08-04T17:58:25.817 に答える
0

ベジェ曲線は私が探しているものです。

于 2012-08-07T00:36:58.117 に答える