我正在开发一个运行游戏的LibGdx。我在游戏中有收藏品/硬币。 我创造了一个硬币阵列,并在整个游戏过程中产生了它。
为了改善游戏,我想制作硬币图案。像2个硬币或3个硬币一样,硬币在垂直或对角线安排等。 我试图实现这一点,但发现这是一个更新鲜的艰巨任务。
请建议我使用一些对象来实现三角形等模式的代码。 像这样:3个硬币等距离的三角形:
我的硬币数组和方法包括在这里: 我在最后一枚硬币的基础上添加了新的硬币,通过屏幕上的特定距离。
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);
}
}
}
也希望有人能告诉我方法中的错误,如果有的话! 提前谢谢!
答案 0 :(得分:2)
首先,尝试对CoinPattern
进行建模:
- 什么是CoinPattern
?
它只是一种模式,描述了多个硬币的排列
- 我需要描述什么?
因为它只是一种模式,你还不需要Coin
在我看来,Point
s(或Vector2
)列表就足够了
这些Point
中的每一个都可以描述Position
内Object
(在您的情况下为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
位置的左下角。