如何用“车道”设计游戏?

时间:2014-09-29 02:14:39

标签: java libgdx

我正在尝试为我的游戏创建一个车道系统,但我在这方面遇到了一些麻烦。我试图这样做,所以我可以有5个车道,我有一个抽象的船类,有一个moveTo方法,我希望能够在车道之间移动,但我不得不在创建车道和将船舶移动到指定的问题这里是我目前的代码。

这是我的抽象船类:注意MoveTo(int laneNumber)方法

package me.heirteir.Amazed.gameObjects;

import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.math.Rectangle;
import com.badlogic.gdx.math.Vector2;

public abstract class Ship {
    public static final int PLAYER = 0;

    public abstract void render(float delta);

    public abstract void moveTo(int laneNumber);

    public abstract void setTexture(Texture texture);

    public abstract Texture getTexture();

    public abstract Vector2 getPos();

    public abstract Rectangle getRect();

    public abstract int getType();
}

我对创建全球车道系统并不是很有想法,但这是我的进步

package me.heirteir.Amazed.gameObjects.framework;

public class Lanes {
    public static final int LANES_AMOUNT = 5;
    float lane1, lane2, lane3, lane4, lane5;
    public Lanes(float width, float height){

    }
}

总的来说,我正在努力创建一个5车道系统,船只可以移动到随机车道,我将如何实现这一点,感谢阅读!

1 个答案:

答案 0 :(得分:0)

好吧我从评论中设计了一个解决方案,我创建了一个Lanes类,我可以使用它来访问Lanes数组,然后我做了一些数学计算并提出了这个解决方案

package me.heirteir.Amazed.gameObjects.framework;

import com.badlogic.gdx.utils.Array;

public class Lanes {
    public static final int LANE_COUNT = 5;
    public static Array<Lane> lanes = new Array<Lane>();

    public static void setupLanes(float width, float height) {
    for (int x = 0; x < 5; x++) {
        lanes.add(new Lane(width / LANE_COUNT, height, width / LANE_COUNT * x + 1, height));
    }
   }
}

然后这是我的实际车道类     包me.heirteir.Amazed.gameObjects.framework;

import com.badlogic.gdx.math.Rectangle;
import com.badlogic.gdx.math.Vector2;

public class Lane {
    private Vector2 pos;
    private Rectangle rect;

    public Lane(float width, float height, float x, float y) {
    rect = new Rectangle();
    rect.width = width;
    rect.height = height;
    rect.x = x;
    rect.y = y;

    pos = new Vector2(x, y);
    }

    public Vector2 getPos(){
    return pos;
    }

    public Rectangle getRect() {
    return rect;
    }
}

然后这就是我渲染的地方,以确保正确创建了车道

    public void render(float delta) {
    Gdx.gl.glClearColor(0, 0, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    camera.update();

    game.batch.setProjectionMatrix(camera.combined);
    game.batch.begin();

    for (Lane lane : Lanes.lanes) {
        game.batch.draw(game.texture, lane.getPos().x, 0, lane.getRect().width,     lane.getRect().getHeight());
}

game.batch.end();
}

这是最终结果 http://imgur.com/OBuXHxN