Về cơ bản bạn cần phải tìm ra vector giữa điểm ở trung tâm của hộp của bạn, và điểm của con trỏ chuột, sau đó tính toán góc và chuyển đổi nó đến độ. Sau đó chỉ cần áp dụng các góc thông qua CSS:
var box=$(".box");
var boxCenter=[box.offset().left+box.width()/2, box.offset().top+box.height()/2];
var angle = Math.atan2(e.pageX - boxCenter[0], - (e.pageY - boxCenter[1]))*(180/Math.PI);
box.css({ "-webkit-transform": 'rotate(' + angle + 'deg)'});
box.css({ '-moz-transform': 'rotate(' + angle + 'deg)'});
GÌ
Ok, chúng ta hãy thực hiện việc này ngoài. Đây là những gì chúng ta có:

Các vector AB đi giữa trung tâm của hộp và vị trí chuột. Chúng tôi đã tính toán Θ (theta), là góc giữa trục X và AB. Vì AB tạo một tam giác với các trục X và Y, chúng ta có thể sử dụng hàm Arctan để tính toán nó. Chính xác hơn, chúng tôi sử dụng các chức năng tiện lợi của Arctan2 mà đưa ra một góc dương khi y> 0 và góc tiêu cực khi y < 0.
atan2 trả về độ trong radian, và CSS làm việc với độ, vì vậy chúng tôi chuyển đổi giữa hai người sử dụng 180/Math.PI
. (Một radian là thước đo của một góc, khi vẽ một góc trung tâm của một vòng tròn, chặn một vòng cung có chiều dài bằng chiều dài bán kính của vòng tròn. - Lấy từ here)
Một cảnh báo cuối cùng - Vì trong trình duyệt trục Y bị đảo ngược (nghĩa là, bạn càng đi sâu vào trang, giá trị Y càng cao), chúng tôi phải lật trục Y: Chúng tôi đã làm như vậy bằng cách thêm dấu trừ vào từ Y:
- (e.pageY - boxCenter[1])
tôi hy vọng điều này giúp làm sạch một số điều ...
Dưới đây là một là olated jsfiddle example
BTW, Trò chơi của bạn rất khó! :)
Nếu SO đã không đưa ra một giải pháp trước đây, tôi có thể thử sau khi tôi nhìn một số thứ lên. Nhưng tôi hy vọng có một giải pháp tốt hơn. – 11684