Tìm ra gạch nhấp chuột nào đã hạ cánh


9

Tôi đang làm việc trên một trò chơi dựa trên lưới isometric và tôi đang gặp vấn đề khi cố gắng liên kết một lần nhấp chuột từ người dùng đến một ô. Tôi đã có thể chia vấn đề thành 2 phần:

  • Tìm một hình chữ nhật bao quanh một ô (mà tôi đã có thể làm được)
  • Tìm ra từ hình chữ nhật mà nhấp chuột đã hạ cánh (đã khiến tôi bối rối)

Dưới đây là một ví dụ về hình chữ nhật có gạch ở bên trong:

Hình chữ nhật chứa gạch

Hình chữ nhật dài 70px và cao 30px, vì vậy nếu tôi sử dụng đầu vào nói 30x (trên cùng) / 20y (trái), làm thế nào để tôi xác định gạch này rơi vào đâu?



Điều gì về một sự thay đổi tọa độ và sau đó là một kiểm tra? Nếu gạch của bạn nơi lát lát, bạn chắc chắn sẽ sử dụng hệ tọa độ cực.
FxIII

Câu trả lời:


8

Đối với mỗi bước bạn thực hiện theo hướng x, bạn sẽ di chuyển 35px sang trái và -15px lên khung vẽ của bạn;

Đối với mỗi bước bạn thực hiện theo hướng y, bạn sẽ di chuyển sang trái -35px và -15px lên khung vẽ của bạn;

ngói để cartesian

Điều này có nghĩa là bạn có thể chuyển đổi hệ thống tọa độ gạch của mình một cách dễ dàng bằng pixel:

(x, y) => (35 · x, -15 · x) + (-35 · y, -15 · y) = (35 · x - 35 · y, -15 · x - 15 · y) = ( Xpx, Ypx)

Bạn phải giải quyết vấn đề nghịch đảo mà bạn biết Xpx và Ypx và bạn muốn biết x và y (trong tọa độ ô vuông).

Xpx = 35 · x - 35 · y;

Ypx = -15 · x - 15 · y;

bạn có thể giải quyết điều này không?

x = 1/70 · Xpx - 1/30 · Ypx

y = -1 / 70 · Xpx - 1/30 · Ypx

Rõ ràng bạn sẽ có các giá trị không nguyên trong trường hợp chung: lấy trần của cả x và y sẽ cung cấp cho bạn tọa độ của toàn bộ ô.


hình chữ nhật dài 70px, sau đó bước là 35px chứ không phải 30px (theo chiều ngang)
CeeJay
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.