gpt4 book ai didi

Java 光滑 : translation

转载 作者:行者123 更新时间:2023-12-01 12:57:11 27 4
gpt4 key购买 nike

我是 Java slick 的新手,我对“相机”的翻译有一个小问题。我有这个代码:

package chapterOne;

import org.newdawn.slick.Animation;
import org.newdawn.slick.Color;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.Input;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.SpriteSheet;
import org.newdawn.slick.state.BasicGameState;
import org.newdawn.slick.state.StateBasedGame;
import org.newdawn.slick.tiled.TiledMap;

public class GameState extends BasicGameState {

public static final int ID = 1;

private TiledMap map;
private float posHumanX = 400;
private float posHumanY = 600;
private int direction = 0;
private Animation[] animationHumain = new Animation[8];

private boolean isMovingUp = false;
private boolean isMovingDown = false;
private boolean isMovingLeft = false;
private boolean isMovingRight = false;

private float vitesse = .1f;

@Override
public void init(GameContainer container, StateBasedGame game)
throws SlickException {
map = new TiledMap("src/main/resources/map/exemple.tmx");
SpriteSheet sprite = new SpriteSheet("src/main/resources/sprites/soldier.png", 64, 64);

animationHumain[0] = loadAnimation(sprite, 0, 1, 0);
animationHumain[1] = loadAnimation(sprite, 0, 1, 1);
animationHumain[2] = loadAnimation(sprite, 0, 1, 2);
animationHumain[3] = loadAnimation(sprite, 0, 1, 3);
animationHumain[4] = loadAnimation(sprite, 1, 9, 0);
animationHumain[5] = loadAnimation(sprite, 1, 9, 1);
animationHumain[6] = loadAnimation(sprite, 1, 9, 2);
animationHumain[7] = loadAnimation(sprite, 1, 9, 3);
}

private Animation loadAnimation(SpriteSheet spriteSheet, int startX, int endX, int y) {
Animation animation = new Animation();
for (int x = startX; x < endX; x++) {
animation.addFrame(spriteSheet.getSprite(x, y), 100);
}
return animation;
}

@Override
public void render(GameContainer container, StateBasedGame game, Graphics g)
throws SlickException {
map.render(0, 0);

g.setColor(new Color(0, 0, 0, .5f));
g.fillOval(posHumanX - 16, posHumanY - 8, 32, 16);
boolean isMoving = getIsMoving();
g.drawAnimation(animationHumain[direction + (isMoving ? 4 : 0)], posHumanX-32, posHumanY-60);

g.translate(container.getWidth() / 2 - this.posHumanX, container.getHeight() / 2 - this.posHumanY);
}

private boolean getIsMoving(){

if(isMovingUp || isMovingDown || isMovingLeft || isMovingRight){
return true;
}

return false;
}

@Override
public void update(GameContainer container, StateBasedGame game, int delta)
throws SlickException {
if (this.isMovingUp) {
this.posHumanY -= vitesse * delta;
}

if (this.isMovingDown) {
this.posHumanY += vitesse * delta;
}

if (this.isMovingLeft) {
this.posHumanX -= vitesse * delta;
}

if (this.isMovingRight) {
this.posHumanX += vitesse * delta;
}
}

@Override
public void keyPressed(int key, char c) {
switch (key) {
case Input.KEY_UP: this.direction = 0; this.isMovingUp = true; break;
case Input.KEY_LEFT: this.direction = 1; this.isMovingLeft = true; break;
case Input.KEY_DOWN: this.direction = 2; this.isMovingDown = true; break;
case Input.KEY_RIGHT: this.direction = 3; this.isMovingRight = true; break;
case Input.KEY_A: vitesse = vitesse + 0.2f; break;
}
}

@Override
public void keyReleased(int key, char c) {
switch (key) {
case Input.KEY_UP:
this.isMovingUp = false;
if(isMovingDown){ direction = 2; break;}
if(isMovingLeft){ direction = 1; break;}
if(isMovingRight){ direction = 3; break;}
break;
case Input.KEY_LEFT:
this.isMovingLeft = false;
if(isMovingUp){ direction = 0; break;}
if(isMovingDown){ direction = 2; break;}
if(isMovingRight){ direction = 3; break;}
break;
case Input.KEY_DOWN:
this.isMovingDown = false;
if(isMovingUp){ direction = 0; break;}
if(isMovingLeft){ direction = 1; break;}
if(isMovingRight){ direction = 3; break;}
break;
case Input.KEY_RIGHT:
this.isMovingRight = false;
if(isMovingUp){ direction = 0; break;}
if(isMovingDown){ direction = 2; break;}
if(isMovingLeft){ direction = 1; break;}
break;
case Input.KEY_A: vitesse = vitesse - 0.2f; break;
}
}

@Override
public int getID() {
return ID;
}

}

但是,这不起作用。我认为我错过了 render() 中的某些内容,但我不知道是什么:/

谢谢

最佳答案

您需要翻译图形对象以绘制您想要翻译的内容。因此,将您的 g.translate(...) 行调到渲染函数的顶部。唯一的问题是(如果您不想翻译任何其他内容),您必须在开始翻译之前将其重新翻译到原来的位置。

关于Java 光滑 : translation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23780443/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com