Saya sedang mengerjakan game yang akan melibatkan hexagon terkesiap .
Saat ini, saya memiliki gambar segi enam yang saya gunakan (semua sisi memiliki panjang yang sama ... cocok menjadi 50px dengan gambar 50px).
Saya agak baru untuk C # dan benar-benar baru untuk XNA, tetapi apakah ada semacam metode mudah yang dapat saya panggil daripada melakukan pernyataan berbelit-belit jika didasarkan pada titik dan sudut?
c#
xna
hexagonal-grid
engkau
sumber
sumber
Jawaban:
Hexagon adalah kotak dengan sudut terpotong. Cara saya melihat ini dilakukan, dan saya pernah mendengar seri Civilization melakukannya dengan peta ortogonal, adalah membuat bitmap dengan spasi putih (ortogonal atau heksagonal), dan merah, hijau, biru, dan kuning sudut. (Atau warna apa pun yang Anda suka.)
Heksagonal: atau
Orthogonal:
Kemudian, tentukan saja persegi panjang mana yang kursornya sudah berakhir, dan uji warna pixel di lokasi itu. Jika putih, mereka melayang di atas ruang itu. Setiap warna lain dipetakan ke offset, dan mereka melayang di atas hexagon itu. Cara ini efisien, membutuhkan sedikit geometri, dan dapat digunakan untuk ruang tessellating sewenang-wenang.
sumber
Tidak ada metode XNA yang melakukan uji hit segi enam.
Artikel ini menjelaskan cara menulis fungsi yang melakukan tes, dan memberi Anda fungsi:
Cara Memeriksa apakah suatu Titik ada di Dalam Segi Enam
Berikut ringkasan dari artikel itu:
Dan fungsi yang melakukan tes berjalan seperti ini:
isInside
tes berikut untuk kuadran lokal.Lihat artikel untuk detail lengkap.
Berikut adalah beberapa sumber terkait lainnya yang berguna:
Koordinat dalam Peta Ubin Berbasis Hexagon
Apakah titik di dalam segi enam biasa?
sumber
Di sini saya mendapatkan metode yang dapat digunakan untuk mendeteksi klik di dalam poligon apa pun:
Anda perlu memberikan sudut hexagon Anda dalam array vektor2 (poli) dan posisi yang diklik (p) untuk metode ini.
sumber