跟踪路径上的2D对象/预定运动

时间:2012-08-04 16:12:15

标签: android opengl-es 2d game-physics

我正在制作一个openGL自上而下的太空射击游戏,以学习如何制作游戏。我有很多基础知识(游戏循环,逻辑隔离等)。

我遇到的一个问题是如何创建更复杂的对象移动。我目前有一些敌人正在屏幕上移动正弦波。我想让它们执行更复杂的动作,例如向下移动屏幕,停止,然后重新开始,也许在此过程中做一些循环。

我已经将我的运动逻辑分解为它自己的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();
  }
}

我的物体有位置,速度和加速度矢量。

是否有一种普遍接受的脚本运动方式?

2 个答案:

答案 0 :(得分:0)

对于脚本移动,仅使用速度和位置而不加速可能更为有效。另外,你使用的是游戏引擎吗?我建议像AndEngine之类的东西,而不是重新发明轮子。

答案 1 :(得分:0)

bezier曲线正是我正在寻找的。