Saya memiliki Entity
contoh yang diperbarui setiap centang game. Anggap saja entitas bergerak maju terus-menerus. Saya ingin dapat memberikan sudut entitas ke fungsi yang membuatnya bergerak ke arah itu:
moveForward(90);
harus membuat mereka bergerak ke kanan. Jika saya menyatakan rotasi saya sebagai global int
, maka lakukan
moveForward(rotation);
rotation++;
akan membuatnya melacak lingkaran kecil dengan gerakannya.
Bagaimana saya bisa melakukan ini? Saya menganggap ini melibatkan matematika vektor; Saya tidak tahu, jadi penjelasan singkat akan menyenangkan.
sumber
Jawaban lain salah seperti yang sekarang, untuk bergerak dengan benar di sepanjang pesawat berdasarkan rotasi Anda melakukan hal berikut:
Namun saya akan merekomendasikan membuat variabel untuk cos / sin yang Anda perbarui hanya ketika rotasi berubah sehingga Anda tidak menghitungnya 4 kali centang.
StrafeSpeed akan bergerak dari sisi ke sisi, forwardSpeed untuk bergerak maju sepanjang rotasi Anda.
sunting: tesselode melakukan hal yang sama kecuali dia tidak memiliki gerakan dari sisi ke sisi.
sumber
Anda mengatakan perbarui kutu, jadi saya berasumsi Anda tidak memiliki frame rate variabel. Jika begitu:
x + = kecepatan * math.cos (sudut)
y + = kecepatan * math.sin (sudut)
Jika Anda menggunakan frame rate variabel, Anda perlu mengalikannya dengan waktu delta juga.
sumber