2013-04-29 2 views
0

Мне нужна помощь в выяснении, почему вражеские пуль не будут двигаться, когда у них одинаковый код ... Пожалуйста, помогите ... Я не сделал ни одного, отдельный класс просто простую анимациюНужна помощь в перемещении вражеской анимации пули по экрану

Теперь я думаю, что вы можете видеть, когда я говорю, что у них одинаковый код, я имею в виду как IDENTICAL код haha. Это действительно бросает меня, что игрок пуля работает нормально, но вражеские пули не будут делать ничего

public void render(GameContainer gc, StateBasedGame sbg, Graphics g) throws SlickException { 
map.draw(0,0); 
// First enemy 
enemy1.draw(enemy1PosX, enemy1PosY); 
enemyShot.draw(enemy1PosX+30, enemy1PosY + 65); 


//Player 
ship.draw(shipPosX, shipPosY); 
playerShot.draw(shootPosX+23, shootPosY); 
Animation copy = playerShot.copy(); 
copy.draw(shootPosX+23, shootPosY); 

g.drawString("Ship X: " + shipPosX + "\nShips Y: " + shipPosY,400,20); 

if(quit == true) { 
    g.drawString("Resume (R)",250,100); 
    g.drawString("Main Menu (M)",250,150); 
    g.drawString("Quit Game(Q)",250,200); 
    if(quit==false){ 
     g.clear(); 
    } 

} 

}

public void update(GameContainer gc, StateBasedGame sbg, int delta) throws SlickException { 
Input input = gc.getInput(); 
//Move Enemy 

enemy1=enemyA; 
//enemy1PosX += delta * .7f; 
//enemy1PosY += delta * .1f; 
    if(enemy1PosX > 668){ 
     enemy1PosX = -1; 
     if(isEnemyHit(enemy1)){ 
      deadEnemies.add(enemy1); 
    } 
} 


// up 
if(input.isKeyDown(Input.KEY_UP)){ 
    ship = move; 
    movefx.play(); 
    shipPosY -= delta * .6f; 
    //collision detection 
    if(shipPosY < 9){ 
     shipPosY = 9; 

    } 
} 
//down 
if(input.isKeyDown(Input.KEY_DOWN)){ 
    ship = move; 
    shipPosY += delta * .6f; 
    //collision detection 
    if(shipPosY > 468){ 
     shipPosY = 468; 
    } 
} 
//left 
if(input.isKeyDown(Input.KEY_LEFT)){ 
    ship = move; 
    shipPosX -= delta * .6f; 
    //collision detection 
    if(shipPosX < -1){ 
     shipPosX =-1; 
    } 
} 
//right 
if(input.isKeyDown(Input.KEY_RIGHT)){ 
    ship = move; 
    shipPosX += delta * .6f; 

    //collision detection 
    if(shipPosX > 668){ 
     shipPosX = 668; 
    } 
} 
    //FIRE PLAYER BULLETS 
    playerShot = shootUp; 
    playerShot.start(); 
    shootPosX = shipPosX-10; 
    shootPosY -= delta * 1.3f; 
    Animation copy = playerShot.copy(); 

    //Auto-Shoot bullet 
    if(shootPosY <= shipPosY - 480){ 
     copy = playerShot; 
     shootPosX = shipPosX; 
     shootPosY = shipPosY; 
     shootPosY -= delta * 1.7f; 
     copy.restart(); 
    } 

    //FIRE ENEMY BULLETS 
    enemyShot = shootDown; 
    enemyShot.start(); 
    enemyShotPosX = enemy1PosX + 10; 
    enemyShotPosY += delta * .3f; 
    Animation dbl = playerShot.copy(); 

EnemyShot является анимация playerShot является анимацией Нет индивидуальный врага или игрок класса либо , Пожалуйста, помогите

+0

* «Нужна помощь ..» * Вам нужен [SSCCE] (http://sscce.org/) и вопрос. –

+0

Huh? ... Я в замешательстве – iibinxx

+0

«Мне нужна помощь в выяснении, почему вражеские пуль не будут двигаться, когда у них одинаковый код». Я объяснил, что я не понимаю ... У пуль с игроком одинаковый код ... у игроков пули работают вражеские пуль не ... Я не понимаю, как это не объясняет, что я не понимаю – iibinxx

ответ

0

Возможно, вы захотите дать каждой отдельной вражеской пуле свою собственную позицию вместо одного относительно положения самого врага. Это было внутри вашего метода визуализации:

enemyShot.draw(enemy1PosX+30, enemy1PosY + 65); 

Из того, что я понимаю, в самом лучшем случае, это заставит пулю следовать врагов х и у позиции с небольшим количеством смещения. Кроме того, у вас есть код, который позволяет прокрутить движение врага, а именно: //enemy1PosX += delta * .7f; //enemy1PosY += delta * .1f; Надеюсь, это поможет!