Sistem operasi atau perangkat - versi Godot:
Windows 10 x64 - Godot 2.1.2.stable.official
Deskripsi masalah:
Setelah memindahkan KinematicBody2D dengan move(), transformasi Collider tidak diperbarui.
Setiap gerakan hanya akan diuji dengan posisi/transformasi Collider awal.
Langkah-langkah untuk mereproduksi:
func _ready():
set_fixed_process(true)
func _fixed_process(delta):
move(Vector2(0, 100))
move(Vector2(100, 0))
set_fixed_process(false)
A hanya bergerak ke bawah, tetapi tidak ke kanan.
Meskipun setelah bergerak ke bawah, A akan muat di bawah B.
Itu harus di bawah B dan seharusnya bergerak dalam bentuk-L (pertama ke bawah, lalu ke kanan).
Pindah tidak memperbarui Collider ke posisi baru, jadi ketika mencoba bergerak ke kanan, tampaknya terhalang oleh B, seperti yang akan terjadi, jika kita hanya bergerak ke kanan.
Solusi:
ubah _fixed_process menjadi:
func _fixed_process(delta):
move(Vector2(0, 100))
var st = get_shape_transform(0) # get current shape transform, assuming we only have 1 shape
st.o += get_travel() # add move translation to shape transform
set_shape_transform(0, st) # update shape transform
move(Vector2(100, 0))
# you should reset the shape transform to its original state befor returing
set_fixed_process(false)
Saya pikir ini duplikat dari #7951, tetapi saya ingin @RandomShaper mengonfirmasi :smiley:
Ya, itu masalah yang sama.
Aku merindukan yang itu.
Terima kasih.
Komentar yang paling membantu
Saya pikir ini duplikat dari #7951, tetapi saya ingin @RandomShaper mengonfirmasi :smiley: