收藏品的图案创作 - LibGdx

时间:2017-01-09 10:06:50

标签: libgdx

我正在开发一个运行游戏的LibGdx。我在游戏中有收藏品/硬币。 我创造了一个硬币阵列,并在整个游戏过程中产生了它。

为了改善游戏,我想制作硬币图案。像2个硬币或3个硬币一样,硬币在垂直或对角线安排等。 我试图实现这一点,但发现这是一个更新鲜的艰巨任务。

请建议我使用一些对象来实现三角形等模式的代码。 像这样:3个硬币等距离的三角形: enter image description here

我的硬币数组和方法包括在这里: 我在最后一枚硬币的基础上添加了新的硬币,通过屏幕上的特定距离。

Array<Coin> coins = new Array<Coin>();

private void createCoin() {

    coinObj = objectFactory.createCoin(CoinEnum.random());
    coinObj.isCollided = false;
    coins.add(coinObj);

}

private void spawnCoin() {

    if (coins.size == 0) {
        createCoin();
    } else {
        Coin c = coins.peek();

        if (c.getY() > (Constants.WORLD_HEIGHT / 8))
            createCoin();
    }
    // remove out of screen coins
    if (coins.size > 0) {
        Coin cc = coins.first();
        if (cc.getY() > Constants.WORLD_HEIGHT) {
            coins.removeValue(cc, true);
        }
    }
}

也希望有人能告诉我方法中的错误,如果有的话! 提前谢谢!

1 个答案:

答案 0 :(得分:2)

首先,尝试对CoinPattern进行建模:
- 什么是CoinPattern
它只是一种模式,描述了多个硬币的排列 - 我需要描述什么? 因为它只是一种模式,你还不需要Coin 在我看来,Point s(或Vector2)列表就足够了 这些Point中的每一个都可以描述PositionObject(在您的情况下为Coin)的相对Pattern

现在您可以为Pattern创建常量。三角形看起来像这样:

public static final PATTERN_TRIANGLE = new Vector2[] {
    new Vector2(0,0),
    new Vector2(1,0),
    new Vector2(0,1),
};

然后你可以创建一个方法spawnPattern(Vector2[] pattern, int x, int y)。然后,此方法应为Coin中的每个Vector2创建pattern 每个Coin的位置可以这样计算:

int posX = x + pattern[i].x;
int posY = y + pattern[i].y;

注意,使用此方法,Coin s的位置相对于Pattern位置的左下角。