Untuk gim yang mirip Peggle , saya ingin membuat blok yang mengikuti kurva, seperti ini:
Balok kemudian akan menghilang saat bola mengenai mereka.
Saya berhasil menggambar beberapa secara horizontal, tetapi saya kesulitan membuat mereka mengikuti jalan:
Bagaimana saya melakukan ini? Apakah saya perlu membuat objek Box2D dengan simpul khusus?
collision-detection
box2d
geometry
curves
Moerin
sumber
sumber
Jawaban:
Diberikan kurva "root", inilah cara Anda dapat menghasilkan simpul blok.
Kurva root ada di tengah, hitam. Titik kontrolnya ditunjukkan dengan
X
s merah .Singkatnya : Saya membuat Bézier dan mengambil sampelnya (pada tingkat yang dapat dikonfigurasi). Saya kemudian menemukan vektor tegak lurus vektor dari setiap sampel ke sampel berikutnya, dinormalisasi , dan diskalakan ke setengah lebar (dapat dikonfigurasi), pertama ke kiri, kemudian berbanding terbalik ke kanan. Lalu menggambarnya.
Hal yang dapat Anda tambahkan ke ini:
Ini kode saya. Itu ditulis dalam Lua (untuk kerangka permainan LÖVE ), tapi saya pikir itu bisa dibaca oleh siapa pun.
Jika Anda ingin bermain dengannya: Dapatkan LÖVE dan masukkan kode di atas ke
main.lua
dalam direktori sendiri. Letakkanvector.lua
dariHUMP
perpustakaan di direktori yang sama. Jalankan sebagailove <that-directory>
dari baris perintah.Gerakkan mouse! Titik kontrol tengah diatur ke lokasi mouse:
sumber