2017-02-09 6 views
1

전 방향으로 움직이고 촬영하는 플레이어로 간단한 2D 게임을 만들고 있습니다.Java 2D 게임 다른 방향으로 촬영하기

나는 지금까지 작동하도록 관리했지만 한 가지 문제가 있습니다. 내가 총을 쏘면 총알이 내가 움직이는 방향으로 가고 싶다. 지금까지 내가 쏠 수 있지만 플레이어의 움직임 방향을 변경하면 총알의 방향도 바뀝니다.

내가 움직일 때 총알이 방향을 바꾸지 않도록 내가 도와 줄 수 있습니까?

public static int direction; 

public void keyPressed(KeyEvent k) { 
    int key = k.getKeyCode(); 

    if (key == KeyEvent.VK_RIGHT) { 
     player.setVelX(5); 
     direction = 1; 
    } else if (key == KeyEvent.VK_LEFT) { 
     player.setVelX(-5); 
     direction = 2; 
    } else if (key == KeyEvent.VK_DOWN) { 
     player.setVelY(5); 
     direction = 3; 
    } else if (key == KeyEvent.VK_UP) { 
     player.setVelY(-5); 
     direction = 4; 
    } else if (key == KeyEvent.VK_SPACE) { 
     controller.addFire(new Fire(player.getX(), player.getY(), this)); 
    } 
} 

그리고 촬영 클래스 : 여기

는 플레이어의 운동의 조각입니다 나는 당신이 당신의 화재 생성자에서 Game.direction을 확인한다 무엇을해야하는지 생각

public class Fire { 

    private double x,y; 
    BufferedImage image; 

    public Fire(double x, double y, Game game){ 
     this.x = x; 
     this.y = y; 
    } 
    public void tick(){ 

     switch (Game.direction){ 
      case 1: 
       x += 10; 
       break; 
      case 2: 
       x -= 10; 
       break; 
      case 3: 
       y += 10; 
       break; 
      case 4: 
       y -= 10; 
       break; 
     } 
    } 
    public void render(Graphics graphics){ 
     graphics.drawImage(image, (int)x, (int)y, null); 
    } 
} 

답변

1

Game.direction에 액세스하는 대신 글 머리 기호의 특정 방향을 만들 수 있습니다.

new Fire(player.getX(), player.getY(), direction) 

다음 마우스 오른쪽 나에게 소리

public Fire(double x, double y, int direction){ 
    this.x = x; 
    this.y = y; 
    this.direction = direction; 
} 

public void tick(){ 

    switch (direction){ 
     case 1: 
      x += 10; 
      break; 
     case 2: 
      x -= 10; 
      break; 
     case 3: 
      y += 10; 
      break; 
     case 4: 
      y -= 10; 
      break; 
    } 
} 
+0

감사합니다! 이것은 잘 작동했습니다. 건배! –

+0

나는 그것을 듣게 행복하다. 내가 당신을 도운다면이 대답을 수락하십시오. – enucar

3

하고, 총알 속도를 설정하십시오. (개인 변수로 만드십시오). 그렇게하면 Game.direction이 나중에 변경되면 해당 변경 사항이 총알에 영향을 미치지 않습니다.

+0

. 그는 Game.direction을 전역 변수로 사용하여 모든 개별 글 머리표를 참조하지만 각 글 머리표는 초기 속도를 기억하여 평생 일관된 방향으로 움직여야합니다. – DavidS