2012-08-04 51 views
-1

我正在製作一個openGL自上而下的太空射擊類型的遊戲,以瞭解如何創建遊戲。我有很多基礎知識(遊戲循環,邏輯隔離等)。跟蹤路徑上的2D對象/預先確定的移動

我遇到的一個問題是如何創建更復雜的對象移動。我目前有一些敵人沿着屏幕正弦移動。我希望讓他們執行更復雜的動作,如向下移動屏幕,停止,然後重新開始,也許在這個過程中做一些循環。

我已經將我的運動邏輯打破了它自己的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(); 
    } 
} 

我的物體有位置,速度和加速度向量。

有沒有一個普遍接受的方式來做腳本運動?

回答

0

貝塞爾曲線是我正在尋找。

0

對於腳本運動,僅使用速度和位置而沒有加速度可能會更危險。另外,你是否使用遊戲引擎?我會推薦類似AndEngine而不是重新發明輪子。

+0

我一直在閱讀「Beginning Android Games」一書,它構建了一個非常好的框架。所以我不使用遊戲引擎,因爲我寧願自己學習。 – zombor 2012-08-04 20:14:20