총상이 탱크 이미지 위에 있습니다. 마우스가 조준하는 데 사용할 수 있도록 총이 마우스 위치를 향하게해야합니다. 원래의 총 이미지가 위쪽을 향하게됩니다. 나는 Slick2D를 사용하고 있으며 이미지 클래스는 각도를 취하는 회전 함수를 가지고있다. 이 일을 어떻게 하죠?이미지를 '포인트'로 마우스 위치로 옮깁니다.
2
A
답변
7
입력 개체를 요청하여 사용자 마우스의 위치를 찾을 수 있습니다. 이 작업은 GameContainer에 입력을 요청하여 수행됩니다.
Input userInput = gameContainer.getInput();
float mouseX = userInput.getMouseX();
float mouseY = userInput.getMouseY();
마우스와 총의 위치를 사용하여 총이 직면해야하는 각도를 결정할 수 있습니다. 우리는 총과 마우스 사이에 선을 그리고이 선의 각도를 찾는 것을 상상할 수 있습니다. 이 각도는 마우스가 마우스를 가리 키도록 총이 향해야하는 각도입니다.
Vector2f gunLocation = gun.getLocation();
float xDistance = mouseX - gunLocation.x;
float yDistance = mouseY - gunLocation.y;
double angleToTurn = Math.toDegrees(Math.atan2(yDistance, xDistance));
gunImage.setRotation((float)angleToTurn);
0
은이 같은 수행 목표 :
마우스로 탱크에서 방향은 같다 :
float deltaX = mouse.x - tank.x;
float deltaY = mouse.y - tank.y;
// The resulting direction
return (int) (360 + Math.toDegrees(Math.atan2(deltaY, deltaX))) % 360;
그냥 현재 마우스 위치 예에 탱크의 방향을 갱신 mouseMoved
이벤트입니다.
이미지를 회전 : "Graphics2D", "affine transform", "translation"
:
는 스택 오버 플로우를 살펴 또는 자바 문서를 되세요. 어쩌면 엔진이 이미 일부 라이브러리 기능을 제공하고 있을지도 모릅니다.
희망이 있습니다.
0
위의 답변을 구축하려면 ..
y 축이 시도는 감소하기 때문에 :
float deltaX = mouse.x - tank.x;
float deltaY = tank.y - mouse.y;
관련 문제
- 1. 이미지를 왼쪽에서 오른쪽으로 옮깁니다.
- 2. 마우스 위치로 이미지 애니메이션하기
- 3. 이벤트 리스너를 제거하고 무비 클립을 위치로 옮깁니다.
- 4. JTable 마우스 위치로 스크롤
- 5. 마우스 위치로 이미지 변경
- 6. WPF Scrollviewer 마우스 위치로 스크롤
- 7. MATLAB 마우스 커서를 특정 좌표로 옮깁니다
- 8. 이미지를 ggplot에서 포인트로 사용하는 방법은 무엇입니까?
- 9. 이미지를 UIImageView 포인트로 변환합니다. 콘텐츠 모드를 인식합니다.
- 10. jquery 툴팁/마우스 이동으로 이동/마우스 위치로 툴팁
- 11. "무한하지 않음"마우스 위치로 배경 스크롤
- 12. 다른 양식의 위치로 마우스 포인터 설정
- 13. 사각형과 동일한 마우스 위치로 사각형을 이동 하시겠습니까?
- 14. div를 표시하고 클릭시 마우스 위치로 이동하는 방법
- 15. 이미지를 이동하는 트랙 마우스 위치
- 16. TootlTip 이미지를 통해 마우스
- 17. 다이얼 이미지를 해당 위치로 회전하는 방법.
- 18. 이미지를 안드로이드에서 원래 위치로 이동하는 방법?
- 19. 서블릿에서 FTP 위치로 이미지를 업로드하는 방법은 무엇입니까?
- 20. 홈페이지의 머리글에서 검색 표시 줄을 자홍색으로 옮깁니다.
- 21. NSDictionary의 내용을 NSArray로 옮깁니다.
- 22. fop 테이블을 오른쪽으로 옮깁니다
- 23. 자바가 임의로 파일을 옮깁니다.
- 24. jquery 드롭 UI에서 드래그 요소를 정확한 마우스 위치로 놓기 위치로 복제하려면 어떻게해야합니까?
- 25. XUL 또는 JavaScript에서 지정된 위치로 마우스 커서를 이동하는 방법이 있습니까?
- 26. 자바의 JEditorPane에서 마우스 위치를 문자 위치로 변환하는 방법 Swing
- 27. Firefox 부가 기능 SDK에서 패널 위치를 마우스 위치로 변경하는 방법
- 28. 스프라이트를 원래 스프라이트 위치로 회전
- 29. 입력 텍스트를 iframe에서 기본 창으로 옮깁니다.
- 30. 와이파이 액세스 포인트로 안드로이드 기기
덕분에, 나는 내 게임에 코드를 넣어 그것은 일종의했다. 총은 회전하지만, 마우스를 움직이는 속도의 절반 밖에 안됩니다. 마우스를 총의 다른 쪽으로 움직이면 다른 방향으로 회전하기 시작합니다. 무엇이 잘못 될 수 있는지 알고 있습니까? –
흥미 롭습니다. 이것은 본질적으로 내 자신의 게임에서 코드 조각이므로 나는 그것이 작동 확신. Math.atan2를 사용하고 있는지 확실합니까? 나는 Math.atan이 [pi/2, -pi/2]의 범위를 가지기 때문에 Math.atan2의 범위는 [pi, -pi] –
이기 때문에 단지 묻습니다. Tank 클래스의 'update'함수의 코드는 다음과 같습니다. http : //pastebin.com/KsQUWdEr이 클래스의 인스턴스를 선언하고 내 게임 플레이 상태의 업데이트 섹션에서이 메서드를 호출합니다. –