2014-09-17 3 views
-1

현재 제 2d 자바 게임에 문제가 있습니다. 모든 것이 끝날 때까지 나를 위해 일합니다. 스프라이트를 움직이려고하면 아무 일도 일어나지 않습니다. player.setVelY(-5); 대신 player.setY(player.getY - 5);을 사용하면 스프라이트가 움직이지만 왜 setVelX 및 setVelY가 작동하지 않습니까? :/Java 2D 게임에서 스프라이트가 움직이지 않습니다.

여기

@Override 
public void keyPressed(KeyEvent e){ 
    int key = e.getKeyCode(); 

    switch(BNeeto.state){ 
     case MENU: 
      break; 
     case GAME: 
      if(key == KeyEvent.VK_W) 
       player.setVelY(-5); 
      if(key == KeyEvent.VK_S) 
       player.setVelX(5); 
      if(key == KeyEvent.VK_A) 
       player.setVelY(-5); 
      if(key == KeyEvent.VK_D) 
       player.setVelX(5); 
      break; 
     case OPTIONS: 
      break; 
     case PAUSE: 
      break; 
     default: 
      break; 
     } 
} 

Player.java

package bneeto.entity; 

import bneeto.gfx.Texture; 
import bneeto.gfx.core.CoreObject; 
import java.awt.Graphics; 

public class Player extends CoreObject{ 

    public Player(int x, int y, int id, Texture tex){ 
    super(x, y, id, tex); 
    } 

    @Override 
    public void tick() { 
    x += velX; 
    y += velY; 
    } 

    @Override 
    public void render(Graphics g) { 
     g.drawImage(tex.blockStone, x, y, null); 
    } 
} 
+0

질문과 관련된 부분에 제공하는 코드를 줄이십시오. 이렇게하면 질문이 너무 길어지고이 코드 전체를 읽는 것이 매우 어렵습니다. 대부분의 사람들은 그렇지 않을 것입니다. do (그리고 당신의 질문이 답을 얻는 것을 막는다) – LionC

답변

1

난 당신이 tick() 전화를 결코 생각 것입니다 내 KeyInput.java의 일부입니다.

+0

오, 젠장, 나의 실패 .. 당신 말이 맞다! 감사합니다. – EnricoLook

+0

나는 'tick()'이 마지막 호출 이후로 경과 한 시간에 의존하지 않는다는 사실에 놀랐다. – EpicPandaForce

+0

@Zhuinden이 간격을 유지하기에 충분한 성능이 있음을 보장하면서 일정한 시간 간격으로 tick을 호출하면 틱에서 델타 - 연산이 필요하지 않습니다 (고정 fps로 실행) – LionC

관련 문제