2014-09-10 2 views
-1

마우스 위치의 스프라이트 좌표를 얻는 방법? 게임 엔진 Slick2d. 타일 ​​된지도 16 x 16입니다.마우스 위치의 스프라이트 좌표 얻기 java slick2D 타일 맵

카메라

public class Camera { 

public int x, y; 

Object object; 

public Camera(int x, int y) 
{ 

    this.x = x; 
    this.y = y; 
} 

public void tick() 
{ 
    if(object != null) 
    { 
     if(object instanceof Player) 
     { 
      Player player = (Player) object; 

      this.x = player.getX() - Jail.getJail().gm.getWidth()/2; 
      this.y = player.getY() - Jail.getJail().gm.getHeight()/2; 
     } 
     else if(object instanceof Item) 
     { 
      Item item = (Item) object; 

      this.x = item.getX() - Jail.getJail().gm.getWidth()/2; 
      this.y = item.getY() - Jail.getJail().gm.getHeight()/2; 
     } 
     else if(object instanceof Vector2) 
     { 
      Vector2 vector = (Vector2) object; 

      this.x = (int) vector.getX() - Jail.getJail().gm.getWidth()/2; 
      this.y = (int) vector.getY() - Jail.getJail().gm.getWidth()/2; 
     } 
     else 
     { 
      System.out.println("Unknown object."); 
     } 
    } 
    else 
    { 
     System.out.println("Camera null object."); 
    } 
} 

public void setObject(Object object) 
{ 
    this.object = object;  
} 

public void setX(int x) 
{ 
    this.x = x; 
} 

public void setY(int y) 
{ 
    this.y = y; 
} 

public int getX() 
{ 
    return this.x; 
} 

public int getY() 
{ 
    return this.y; 
} 
} 

마우스를 다른 위치에

  for (int l = 0; l < Jail.itemlist.size(); ++l) 
     { 
      Item item = (Item)Jail.itemlist.get(l); 


       jail.cam.setObject(new Vector2(Mouse.getEventX(), Mouse.getEventY())); 

       System.out.println("Mouse x: " + jail.cam.getX()/16); 
       System.out.println("Mouse y: " + jail.cam.getY()/16); 

       System.out.println("Item x: " + item.getX()/16); 
       System.out.println("Item y: " + item.getY()/16); 

       if (item.mousePressed(this.jail, par1, par2)) 
       { 
        System.out.println("CLICK ON ITEM"); 
       } 
       else 
       { 
        System.out.println("CLICK NO ITEM"); 
       } 

       jail.cam.setObject(jail.player); 
     } 

에게 플레이어, 다른 마우스 좌표를 클릭합니다. 이 문제를 해결하는 방법?

마우스 X 8 마우스 Y : 5 항목 X 10 상품 Y : 10 플레이어 X 37 플레이어 Y : 23

마우스 X 9 마우스 Y : -5 항목 X 10 상품 Y : 10 플레이어 X : 37, Y 플레이어 : 13

마우스 X : 29 마우스 Y : -5 항목 X 10 상품 Y : 10 플레이어 x : 25 플레이어 y : 13

+0

시간이 지나면 링크가 손실 될 수 있으므로 이미지를 게시물에 포함해야합니다. 귀하의 질문은 귀하가 직접 해결하려고 시도한 방법의 최소한을 보여 주어야합니다. – Christian

+0

나는 그림을 삽입 할 등급이 없습니다. 나는 그것을하는 법을 모른다. 그래서 나는 묻고있다. – user3066068

+0

imgur에 사진을 게시하고 여기에 추천서에 링크하십시오. – Unihedron

답변

0

여기에서 추측하겠습니다. Mouse.getEventX(), Mouse.getEventY()은 (는) 창에서 mousePosition을 나타내는 좌표를 제공 할 수 있습니까? 플레이어 좌표가 세계의 위치를 ​​나타내는 반면 (0/0)부터 (tilesX * 16/tilesY * 16)까지입니다.

코드가 더 필요하므로 어쩌면이 Slick2d translate to worldcoordinates이 도움이 될 수 있습니다.