Kotak 2D Mengatur Asal

8

Saya mencoba untuk mengatur asal dari bentuk box2d. Secara default, bentuk berputar di sekitar tengah. Tapi saya mencoba membuatnya berputar di sekitar kiri bentuk. Seperti jam misalnya.

Saya pernah mendengar tentang hal-hal seperti SetXForm tetapi fungsi itu tampaknya tidak ada. Saya menggunakan C ++ kalau-kalau Anda perlu tahu itu.

Terima kasih sebelumnya, bantuan apa pun sangat kami hargai.


sumber

Jawaban:

6

Ada dua macam bentuk dan tiga cara untuk membuatnya di Box2D.

B2CircleShape selalu memiliki pusatnya di tengah lingkaran. Jika Anda ingin membuat "lingkaran miring" Anda harus memperbaiki lingkaran ke objek lain (misalnya lingkaran kecil di dalamnya) dengan sambungan.

B2PolygonShape dapat diinisialisasi dengan SetAsBox. SetAsBox secara default menempatkan asal di tengah-tengah persegi panjang, tetapi Anda bisa melewati b2Vec2 sebagai argumen ketiga untuk menempatkan asal di tempat lain.

B2PolygonShape non-kotak diinisialisasi dengan asal pada koordinat lokal 0,0. Untuk membuat bentuk yang hanya memanjang satu arah, mis. Kanan dan atas, cukup tentukan koordinat seperti (0, 0), (0, 5), (5, 5), (5, 0), buat bentuk hanya sepanjang koordinat lokal yang bergerak ke atas dan ke kanan (dan berliku CCW).

Ingat, asal bentuk selalu koordinat lokal (0, 0). Jika Anda mencoba menganggapnya sebagai "memindahkan asal" Anda hanya akan membingungkan diri sendiri - apa yang Anda lakukan adalah mengimbangi simpul lain relatif terhadap asal.


sumber
2

Sudahlah, saya menemukan jawabannya. Ternyata di b2PolygonShape, saat Anda memanggil fungsi

SetAsBox ()

Ada 2 kelebihan. Dan salah satunya adalah:

SetAsBox (setengah lebar, setengah tinggi, tengah, sudut);


sumber