การค้นหาว่าการคลิกเมาส์แบบเรียงต่อกันใด


9

ฉันกำลังทำงานกับเกมที่มีตารางแบบสามมิติและฉันประสบปัญหาในการพยายามเชื่อมโยงการคลิกเมาส์จากผู้ใช้กับไทล์ ฉันสามารถแยกปัญหาออกเป็น 2 ส่วน:

  • การค้นหาสี่เหลี่ยมผืนผ้าที่ล้อมรอบไทล์ (ซึ่งฉันทำได้)
  • การหาจากสี่เหลี่ยมผืนผ้าที่มีการคลิกที่ไทล์ (ทำให้ฉันนิ่งงัน)

นี่คือตัวอย่างของสี่เหลี่ยมผืนผ้าที่มีแผ่นกระเบื้องด้านใน:

สี่เหลี่ยมผืนผ้าประกอบด้วยกระเบื้อง

สี่เหลี่ยมผืนผ้ามีความยาว 70px และสูง 30px ดังนั้นถ้าฉันใช้อินพุทที่พูดว่า 30x (บนสุด) / 20y (ซ้าย) ฉันจะดูได้อย่างไรว่ากระเบื้องตัวใดที่ตกลงมา?


3
สำเนาซ้ำที่เป็นไปได้: gamedev.stackexchange.com/questions/12362/…
thedaian

สิ่งที่เกี่ยวกับการประสานงานการเปลี่ยนแปลงและจากนั้นตรวจสอบ? หากกระเบื้องของคุณมีชิ้นส่วนของแหวนคุณจะต้องใช้ระบบพิกัดเชิงขั้ว
FxIII

คำตอบ:


8

สำหรับแต่ละขั้นตอนคุณทำในทิศทาง x คุณจะเลื่อนไปทางซ้าย 35px และ -15px ขึ้นไปบนผืนผ้าใบของคุณ

สำหรับแต่ละขั้นตอนที่คุณทำในทิศทาง y คุณจะเลื่อน -35px ไปทางซ้ายและ -15px ขึ้นไปบนผืนผ้าใบของคุณ

กระเบื้องเพื่อคาร์ทีเซียน

ซึ่งหมายความว่าคุณสามารถแปลงระบบประสานกระเบื้องของคุณเป็นพิกเซลได้ง่าย ๆ :

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

คุณต้องแก้ไขปัญหาผกผันที่คุณรู้จัก Xpx และ Ypx และคุณต้องการที่จะรู้ว่า x และ y (ในพิกัดประสานกระเบื้อง)

Xpx = 35 · x - 35 · y;

Ypx = -15 · x - 15 · y;

คุณสามารถแก้ปัญหานี้ได้หรือไม่ควรเป็น:

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

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

เห็นได้ชัดว่าคุณจะมีค่าไม่ใช่จำนวนเต็มในกรณีทั่วไป: การใช้เพดานของทั้ง x และ y จะช่วยให้คุณประสานงานของกระเบื้องทั้งหมด


สี่เหลี่ยมผืนผ้าเป็น 70px นานแล้วขั้นตอนคือ 35px 30px และไม่ได้ (ในแนวนอน)
CeeJay
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.