플레이어 이미지가 마우스 커서를 향하게합니다. 위쪽자바 : 마우스 커서를 가리 키도록 이미지 회전
답변
당신은 회전 각도를 계산하기 위해 trigonometry을 사용해야합니다 기본 플레이어 이미지 포인트 :
private int cursorX = MouseInfo.getPointerInfo().getLocation().x;
private int cursorY = MouseInfo.getPointerInfo().getLocation().y;
참고 : 나는 마우스 커서의 위치보다를 얻기 위해이 코드를 사용합니다. 이를 위해 먼저 이미지와 커서의 위치를 알아야합니다. 이미지의 위치를 얻는 방법이 다를 수 있으므로이를 말할 수는 없습니다. (here에서 적응)이 예를 들어, 나는 imageX
가정합니다 및 imageY
은 이미지의 x
및 y
위치입니다 : (X
float xDistance = cursorX - imageX;
float yDistance = cursorY - imageY;
double rotationAngle = Math.toDegrees(Math.atan2(yDistance, xDistance));
g2D.drawImage (image, x, y, this)에서 어떻게 구현하면 기본 이미지 대신 회전 된 이미지를 그릴 수 있을까? 다른 방법은? – programmer
'을 사용하십시오.rotate (rotationAngle); ' –
이미지 클래스 im에 회전이 없습니다. – programmer
은 좌표 (0,0)에서 각도를 찾으려면 다른 좌표로를 , y), 삼각 함수 tan^-1 (y/x)를 사용할 수 있습니다.
Math
자바 클래스 (또한, 따라서 "ATAN」, 「아크 탄젠트 '라고도 함)을 황갈색^-1 함수로서 작용하는 정적 메소드를 지정하고 atan2
라디안의 각도를 반환한다.
"플레이어"의 좌표에서 마우스 커서의 좌표까지의 각도를 찾기 위해 (나는 가정합니다.)
double theta = Math.atan2(cursorY - player.getY(), cursorX - player.getX());
제로 라디안의 각도가 마우스에 직접 있음을 나타내는 것이라고 주 또한이 "플레이어는"당신은, 우리가 이런 일을 할 필요) x 및 y 좌표를 가지고 언급을 오른쪽입니다. "기본 플레이어 이미지"가 위쪽을 가리킨다 고합니다. 회전하기 전에 플레이어의 이미지가 위쪽을 향하고 있다면, 기하학과 Java 구현 인 atan2
의 경우 플레이어가 "기본적으로"오른쪽을 향하게하는 것이 더 일반적입니다. 당신이 창에서 마우스 위치를 계속 업데이트하려면 마우스를해야하는 경우이 2 년 전에 질문을 받았다지만
Math.atan2를 확장하고 그것을 사용하거나'theta = Math.atan2'를 쓰는 것을 의미하는 클래스를 생성해야합니까? 어떻게 이것을'g2D.drawImage (image, x, y, this);에 구현하겠습니까? ', 다른 방법으로 구현해야합니까? – programmer
내 실수. 예, 'Math.atan2 (...)'을 써서 각도를 찾을 수 있습니다. 정적 메소드입니다. 나는 그것을 반영하기 위해 나의 대답을 편집했다. 'Math.atan2'를 확장 한 클래스를 작성하지 않을 것입니다. Graphics2D와 함께 사용하려면'g2D.rotate (theta) '메소드를 호출하고 이미지를 _then_ 그립니다. – sleeparrow
atan2()는 각도가 아닌 라디안을 반환합니다. – MCMastery
...
, mouseMotionListener를 참조하십시오. 마우스 위치를 가져 오는 데 사용하는 현재는 화면 전체에 상대적입니다. 그 점을 명심하십시오.
그렇지 않으면, 여기 내가 사용하는 방법,
public double angleInRelation(int x1, int y1, int x2, int y2) {
// Point 1 in relation to point 2
Point point1 = new Point(x1, y1);
Point point2 = new Point(x2, y2);
int xdiff = Math.abs(point2.x - point1.x);
int ydiff = Math.abs(point2.y - point1.y);
double deg = 361;
if ((point2.x > point1.x) && (point2.y < point1.y)) {
// Quadrant 1
deg = -Math.toDegrees(Math.atan(Math.toRadians(ydiff)/Math.toRadians(xdiff)));
} else if ((point2.x > point1.x) && (point2.y > point1.y)) {
// Quadrant 2
deg = Math.toDegrees(Math.atan(Math.toRadians(ydiff)/Math.toRadians(xdiff)));
} else if ((point2.x < point1.x) && (point2.y > point1.y)) {
// Quadrant 3
deg = 90 + Math.toDegrees(Math.atan(Math.toRadians(xdiff)/Math.toRadians(ydiff)));
} else if ((point2.x < point1.x) && (point2.y < point1.y)) {
// Quadrant 4
deg = 180 + Math.toDegrees(Math.atan(Math.toRadians(ydiff)/Math.toRadians(xdiff)));
} else if ((point2.x == point1.x) && (point2.y < point1.y)){
deg = -90;
} else if ((point2.x == point1.x) && (point2.y > point1.y)) {
deg = 90;
} else if ((point2.y == point1.y) && (point2.x > point1.x)) {
deg = 0;
} else if ((point2.y == point2.y) && (point2.x < point1.x)) {
deg = 180;
}
if (deg == 361) {
deg = 0;
}
return deg;
}
즉, 아래 그림과 같이 θs 각의 각도를 얻고 X 또는 Y가 0 인 경우 확인하고 특별한을이다 그 사건.
원점은 그림의 중간이며 각 점 (손으로 그린 십자 표시)은 마우스 위치입니다.
- 1. WPF의 비활성화 된 버튼에서 커서를 가리 키도록 마우스 커서를 변경하십시오.
- 2. 배열을 가리 키도록 커서를 만듭니다.
- 3. 마우스 위치를 가리 키도록 개체를 회전하십시오.
- 4. OpenGL : 주어진 방향을 가리 키도록 객체 회전
- 5. jquery가 스타일을 가리 키도록
- 6. JQPlot에서 커서를 가리 키도록 포인터를 커서로 변경하는 방법
- 7. 자바 스크립트 마우스 좌표로 이미지 회전
- 8. 새로운 개미를 가리 키도록 변경했습니다.
- 9. ID가있는 목록 항목을 가리 키도록
- 10. jQuery가 이미지의 특정 영역을 가리 키도록
- 11. 자바 애플릿 내부에 마우스 커서를 잡아
- 12. jQuery를 두 번 클릭하고 이벤트를 가리 키도록
- 13. 특정 이미지 URL을 CDN 서버를 가리 키도록 재배치하는 방법은 무엇입니까?
- 14. 어떻게 다른 UIImageView를 가리 키도록 UIImageView를 설정합니까
- 15. Eclipse에서 자바 문서를 가리 키도록 색상을 변경하는 방법
- 16. CSS - 가리 키기 상태를 "가리 키도록"유지 하시겠습니까?
- 17. 활성 상태의 목록 항목 앵커를 가리 키도록
- 18. Shibboleth SP가 다중 idP를 가리 키도록
- 19. 루트 폴더를 가리 키도록 web.config를 구성하십시오.
- 20. static_files를 가리 키도록 TINYMCE를 설정하는 방법은 무엇입니까?
- 21. 포인터의 주소를 가리 키도록 rootViewController를 설정하는 방법
- 22. 데이터베이스의 이미지를 가리 키도록 레일을 연결합니다.
- 23. 가상 디렉터리를 가리 키도록 webservices 이동
- 24. CSS가 부모의 배경을 가리 키도록 변경 하시겠습니까?
- 25. 배경 탭을 항상 마우스로 가리 키도록 설정하십시오.
- 26. 다른 장면을 가리 키도록 skview에서 버튼을 생성
- 27. 배열을 가리 키도록 포인터를 얻는 방법을
- 28. 외부 끝점을 가리 키도록 백본을 설정합니다.
- 29. 갤러리 상자를 가리 키도록 페이드 인/아웃
- 30. 어떻게 Heroku에 Site5 도메인 이름을 가리 키도록
당신이 상점을 수행 할 작업, 위치를 변경하지 않고 축에서 움직이는 이미지를하지 이잖아 연루 회전, 당신은 커서와 동일한 위치로 이미지를 이동하려면? –
아니, 선수 이미지가 마우스 커서를 마주보고 싶다. – programmer