2013-05-18 2 views
1

그래서 간단한 2D 비디오 게임을 만들고 있습니다. 나는 플레이어가 화면을 이동할 수 있음을 최근 발견, 그래서 나는이 코드를 추가 :플레이어가 화면을 벗어날 수 있습니까?

if (newX <= SIZE * TagsCanvas.SCALE) { 
      newX = SIZE * TagsCanvas.SCALE; 
     } else if (newX >= TagsCanvas.CANVAS_WIDTH - (SIZE * TagsCanvas.SCALE) - getAABB().getRadX()) { 
      newX = TagsCanvas.CANVAS_WIDTH - (SIZE * TagsCanvas.SCALE) - getAABB().getRadX(); 
     } 

     if (newY <= SIZE * TagsCanvas.SCALE) { 
      newY = SIZE * TagsCanvas.SCALE; 
     } else if (newY >= TagsCanvas.CANVAS_HEIGHT - (SIZE * TagsCanvas.SCALE) - getAABB().getRadY()) { 
      newY = TagsCanvas.CANVAS_HEIGHT - (SIZE * TagsCanvas.SCALE) - getAABB().getRadY(); 
     } 

TagsCanvas.CANVAS_WIDTH 캔버스 객체의 폭입니다. Height는 캔버스 객체의 높이입니다. 크기는 플레이어의 크기이며, 눈금은 게임의 눈금입니다 (순간 2입니다). getAABB().getRadX()은 플레이어의 중심에서 가장자리로 반경을 반환합니다 ('플레이어'는 정사각형 상자입니다).

이제 x는 정상적으로 작동하지만 Y 부분은 정상적으로 작동하지 않습니다. 플레이어가지도에서 벗어나지 못하도록 막습니다 (첫 번째 문장).하지만 플레이어가 너무 멀리 20 포인트 정도 내려 가게합니다. 어떤 도움을 주시면 감사하겠습니다!

답변

0

할 수있는 일은 모듈로 연산자 (즉, 정수 나누기 이후 나머지)를 사용하여 둘러 쌀 수 있습니다.

는 5 개 단위를 이동하려는 말 :

public void move(int amt){ 
pos = (pos + amt) % TagsCanvas.CANVAS_WIDTH. 
} 

모듈로 연산자는 값이 같거나 TagsCanvas.CANVAS_WIDTH보다 더 클 수 없으며 있는지 확인합니다 : 이 방법을 되세요.

+0

좋은 생각, 감사합니다 – Tips48

+0

아무 문제도, 도와 드리겠습니다! 재미있는 일입니다. 최근에이 트릭을 사용해야하는 프로젝트가 있었기 때문에 즉각적인 답을 보았습니다. –

관련 문제