نظام التشغيل أو الجهاز - إصدار Godot:
Windows 10 x64 - Godot 2.1.2.stable.official
وصف المشكلة:
بعد نقل KinematicBody2D مع الحركة () ، لا يتم تحديث تحويلات المصادم.
سيتم اختبار كل حركة فقط من خلال موضع / تحول المصادم الأولي.
خطوات التكاثر:
func _ready():
set_fixed_process(true)
func _fixed_process(delta):
move(Vector2(0, 100))
move(Vector2(100, 0))
set_fixed_process(false)
يتحرك A فقط لأسفل ، ولكن ليس إلى اليمين.
على الرغم من أنه بعد الانتقال لأسفل ، فإن "أ" سوف يلائم المستوى "ب".
يجب أن يكون تحت B ويجب أن يتحرك على شكل حرف L (لأسفل أولاً ، ثم لليمين).
لا يقوم Move بتحديث Colliders إلى موضع جديد ، لذلك أثناء محاولة التحرك بشكل صحيح ، يبدو أنه تم حظره بواسطة B ، كما سيكون ، إذا انتقلنا إلى اليمين فقط.
الحل:
تغيير _ fixed_process إلى:
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)
أعتقد أن هذه نسخة مكررة من # 7951 ، لكني أرغب في الحصول على RandomShaper للتأكيد: مبتسم:
نعم ، إنها نفس المشكلة.
لقد فاتني ذلك.
شكرا.
التعليق الأكثر فائدة
أعتقد أن هذه نسخة مكررة من # 7951 ، لكني أرغب في الحصول على RandomShaper للتأكيد: مبتسم: