gpt4 book ai didi

java - 创建的对象粘在屏幕上并且不随 map 移动

转载 作者:行者123 更新时间:2023-12-02 08:51:08 25 4
gpt4 key购买 nike

问题在于在 map 上创建对象。一切都会好起来的,但突然间我只能在屏幕上创建对象(即图像)。每当我对一个对象进行一些协调时,它都会采用屏幕的 (0,0) 点,而不是 map 。所以我可以在 map 上移动我的人(相机工作正常),但例如蜘蛛停留在屏幕上,而不是 map 上。这里对象的初始化:

static float PlayerPositionX = 0;
static float PlayerPositionY = 0;
static GameContainer gc;
static StateBasedGame sbg;

//Spider
Monster monster = new Monster();

float shiftXSpider;
float shiftYSpider;

//Player position at the middle of the screen *half of the screen
static float shiftX = PlayerPositionY + (Game.screenWidth/2);
static float shiftY = PlayerPositionX + (Game.screenHeight/2);
static float shiftXMap = PlayerPositionX;
static float shiftYMap = PlayerPositionY;

这是我的 map 、蜘蛛和玩家的渲染方法。 (当然只是一部分)

worldMap.draw(PlayerPositionX,PlayerPositionY);
player.draw(shiftX,shiftY);
spider.draw(spiderPoint.x, spiderPoint.y);

更新方法:

public void update(GameContainer gc, StateBasedGame sbg, int delta) throws SlickException {
System.out.println(playerPoint.getX() + " " + playerPoint.getY());
playerPoint.x=PlayerPositionX;
playerPoint.y=PlayerPositionY;
Input input = gc.getInput();
monster.Chase(playerPoint.x, playerPoint.y,delta);
// monster.Chase(PlayerPositionX, PlayerPositionY,delta);
// shiftXSpider=monster.getMonsterPositionX();
// shiftYSpider=monster.getMonsterPositionY();
spiderPoint.x=monster.getMonsterPositionX();
spiderPoint.y=monster.getMonsterPositionY();

if(input.isKeyDown(input.KEY_DOWN)) {
player=movingDown;
PlayerPositionY-=delta * .1f;
if(PlayerPositionY<-600) {
PlayerPositionY+=delta * .1f;
}
}
//move up
if(input.isKeyDown(input.KEY_UP)) {
player=movingUp;
PlayerPositionY+=delta * .1f;
if(PlayerPositionY>162) {
PlayerPositionY-=delta * .1f;
}
}
//move right
if(input.isKeyDown(input.KEY_RIGHT)) {
player=movingRight;
PlayerPositionX-=delta * .1f;
if(PlayerPositionX<-840) {
PlayerPositionX+=delta * .1f;
}
}
//move left
if(input.isKeyDown(input.KEY_LEFT)) {
player=movingLeft;
PlayerPositionX+=delta * .1f;
if(PlayerPositionX>324) {
PlayerPositionX-=delta * .1f;
}
}
}

最佳答案

我通过相机类(class)做到了这一点。
在这里你可以找到我所有的类(class):http://pastebin.com/u/huneater
我的小游戏(未完成):https://www.dropbox.com/s/dhvf5vbqj25sgyw/game.jar

我对示例矩形的渲染:

@Override
public void render(GameContainer gc, Graphics g, Camera camera) {
g.setColor(color);
g.fillRect(x - camera.getX(), y - camera.getY(), width, height);
}

对于此相机类别,您应该在玩家更新方法中设置 targetX 和 targetY 位置:

float targetX = x - (gc.getWidth() / 2);
camera.setTargetX(targetX);

float targetY = y - (gc.getHeight() / 2);
camera.setTargetY(targetY);

然后在你的世界的更新循环中,你必须调用相机的更新循环。这样,我的屏幕中间就有了一个玩家, map 上有一些方 block 。而且它们的位置非常完美。

关于java - 创建的对象粘在屏幕上并且不随 map 移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14244311/

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