2012-03-16 4 views
0

안녕하세요 저는 Java로 테스트를하고 있는데 뭔가 만들고 싶지만 어떻게해야할지 모릅니다. 그래서 위/아래/왼쪽/오른쪽 및 동물 (엔티티) 및 플레이어의 위치에 대한 4 가지 애니메이션이 있습니다.플레이어에게 보이는 방향을 감지하는 방법 - Java

동물을 항상 선수쪽으로 보이게하고 싶지만 어떻게 만드는지 잘 모릅니다. 'entity.x> player.x'를 사용하면 올바른 방향으로 보이지만 아래로 보거나 위로 볼 수 없습니까?

바라건대 당신은 내가 무슨 뜻인지 대답하십시오 understeand : D 당신은 이미 절반 방법이야

+0

* "제게 뭔가를 말하면 알려주세요."* 질문을하는 것이 합리적이라는 것을 알고 있습니다. 귀하의 질문은 무엇인가? 또한 .. * "각도를 사용하여 어떤 애니메이션을 실행해야할지 결정했지만 실패했습니다."* SSCCE에서 수행 한 작업 (최선의 시도)을 시도해보십시오. 코드는 말보다 더 크게 말합니다. –

+0

좋아, 나는 사람들이 나 같은 질문을 자주하는 것을 보았 기 때문에 당신이 어떻게 느끼는지 안다. 그러나 나는 그것을 더 잘 설명하는 방법을 모른다. 엔티티 (몹)에 대해 위/아래/왼쪽/오른쪽에 대해 4 가지 애니메이션이 있고 엔티티가 플레이어를 항상 보길 원합니다. 나는 플레이어에게 보이는 방향을 감지하는 방법을 모른다. – IvanDonat

+1

힌트 : "플레이어에게 보이는 방향을 감지하는 방법" 질문 일뿐만 아니라이 페이지에 나타나는 첫 번째 질문입니다. 게시물을 편집하여 소음을 삭제하십시오. –

답변

0

. 당신이하고 싶은 것은 플레이어가 속한 동물과의 관계를 결정하는 것입니다.

하자 먼저 당신이 말했듯이

enum Direction { NORTH, EAST, SOUTH, WEST }; 

을 캡슐화하는 열거 형을, 당신은 플레이어가 동물의 왼쪽 또는 오른쪽에 있는지 여부를 확인할 수 있습니다.

if(player.getX() > animal.getX()) { 
    animal.setDirection(Direction.EAST); 
} else { 
    animal.setDirection(Direction.WEST); 
} 

마찬가지로 Y 좌표와 북/남 방향으로 동일한 작업을 수행 할 수 있습니다.

그럼 이제 첫 번째 수표 또는 두 번째 수표 중 어느 것을 사용해야하는지 어떻게 알 수 있습니까? 음, 잠깐 생각 해봐. 네가있는 곳의 "북쪽"에 살고 있다면 아마 북쪽이 아니라 북쪽 - 확실히, 동쪽보다 북쪽 일 것이다. 그래서 좋은 체크는 "지배적 인 방향이 무엇입니까?"즉. 네가 동쪽에있는 것보다 북쪽에 살면 너는 북쪽에 살고있다. 그럼 어떻게 확인하나요? 글쎄, 당신은 당신이 당신의 장소로 남/북을 여행해야하는 거리가 당신이 동/서를 여행해야하는 거리보다 크다고 말합니다. 코드에서 :

if(Math.abs(animal.getX() - player.getX()) > Math.abs(animal.getY() - player.getY())) { 
    //More east-west than north-south - do EAST-WEST check 
} else { 
    //More north-south than east-west - do NORTH-SOUTH check 
} 

그래서, 결합이 최종 결과 제공 :

if(Math.abs(animal.getX() - player.getX()) > Math.abs(animal.getY() - player.getY())) { 
    //More east-west than north-south - do EAST-WEST check 
    if(player.getX() > animal.getX()) { 
     animal.setDirection(Direction.EAST); 
    } else { 
     animal.setDirection(Direction.WEST); 
    } 
} else { 
    //More north-south than east-west - do NORTH-SOUTH check 
    if(player.getY() > animal.getY()) { 
     animal.setDirection(Direction.NORTH); 
    } else { 
     animal.setDirection(Direction.SOUTH); 
    } 
} 

을 그리고 당신은 완료! 더 이상의 질문이 있으면 알려주세요.

+0

와우! 고마워. 이런 식으로 생각하고 있었는데 수학에 대해 몰랐기 때문에 어떻게해야할지 모르겠다. – IvanDonat