Java Game Dev - 如何创建垂直健康条?
Java Game Dev - How do I create a vertical health bar?
我需要一些帮助来修复我的垂直健康栏。它正确地跟踪健康状况并进行更新,但由于 Java 的绘制方式(从左上角,即 (0,0)),条形图看起来是颠倒的。我想翻转健康栏以使其正确显示,但我不确定该怎么做。
代码x和y中的划分只是为了将条放在canvas上的正确位置。乘数是放大健康栏以适应我为它制作的图形覆盖。
private void drawHealthBar(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
g2.setColor(Color.red);
g2.fillRect(WIDTH - (WIDTH / 50), HEIGHT / 2, 10, ships.get(0).getHealth() * 6);
}
使用 transform() 和 translate() 根据需要设置坐标系。所以:
您希望原点位于 (0, height);左下方。
然后你想翻转Y轴。
示例代码:
AffineTransform tform = AffineTransform.getTranslateInstance( 0, height);
tform.scale( 1, -1);
g2.setTransform( tform);
您需要根据剩余的生命值移动栏,如下所示:
private void drawHealthBar(Graphics g) {
final Graphics2D g2 = (Graphics2D) g;
g2.setColor(Color.red);
final int w = 10;
final int h = ships.get(0).getHealth() * 6; // calculate height first
final int x = WIDTH - (WIDTH / 50);
final int y = HEIGHT / 2 + (MAX_HEIGHT - h); // shift by height of whitespace
g2.fillRect(x, y, w, h);
}
我需要一些帮助来修复我的垂直健康栏。它正确地跟踪健康状况并进行更新,但由于 Java 的绘制方式(从左上角,即 (0,0)),条形图看起来是颠倒的。我想翻转健康栏以使其正确显示,但我不确定该怎么做。
代码x和y中的划分只是为了将条放在canvas上的正确位置。乘数是放大健康栏以适应我为它制作的图形覆盖。
private void drawHealthBar(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
g2.setColor(Color.red);
g2.fillRect(WIDTH - (WIDTH / 50), HEIGHT / 2, 10, ships.get(0).getHealth() * 6);
}
使用 transform() 和 translate() 根据需要设置坐标系。所以:
您希望原点位于 (0, height);左下方。 然后你想翻转Y轴。 示例代码:
AffineTransform tform = AffineTransform.getTranslateInstance( 0, height);
tform.scale( 1, -1);
g2.setTransform( tform);
您需要根据剩余的生命值移动栏,如下所示:
private void drawHealthBar(Graphics g) {
final Graphics2D g2 = (Graphics2D) g;
g2.setColor(Color.red);
final int w = 10;
final int h = ships.get(0).getHealth() * 6; // calculate height first
final int x = WIDTH - (WIDTH / 50);
final int y = HEIGHT / 2 + (MAX_HEIGHT - h); // shift by height of whitespace
g2.fillRect(x, y, w, h);
}