3

問題は、マップ上にオブジェクトを作成することです。すべて問題ないのですが、突然、画面上にオブジェクト (画像) しか作成できなくなりました。オブジェクトにコーディネーションを与えるときはいつでも、マップではなく画面の (0,0) ポイントを取ります。そのため、マップ上で男を動かすことができます (カメラは正しく動作します) が、たとえばクモはマップ上ではなく画面上にとどまります。オブジェクトの初期化:

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;

これは、マップ、スパイダー、およびプレーヤーのレンダリング メソッドです。(もちろん一部です)

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;
        }
    }
}
4

1 に答える 1