الاحتكاك
جزء من قسم الإدخال والحركة في رحلة Godot على Coddy. الدرس 19 من 28.
تتوقف معظم شخصيات الألعاب بسرعة أكبر من سرعة انطلاقها. يُسمّى التباطؤ عند عدم الضغط على أي مفتاح الاحتكاك.
لاستخدام رقم مختلف للتوقف، يحتاج الكود إلى مسارين. تمنح else عبارة if مسارًا ثانيًا، ويُنفَّذ أحد المسارين بالضبط:
if direction == 0:
velocity.x = move_toward(velocity.x, 0, friction * delta)
else:
velocity.x = move_toward(velocity.x, direction * speed, acceleration * delta)تتحقق == مما إذا كانت قيمتان متساويتين. أما = واحدة فتُسنِد قيمة إلى متغير. تكون direction == 0 صحيحة عندما لا يكون هناك أي مفتاح مضغوط.
قيمة صغيرة لـ friction، مثل 300، تجعل الشخصية تنزلق كما لو كانت على الجليد. أما القيمة الكبيرة، مثل 2400، فتوقفها خلال بضعة إطارات.
التحدي
متوسطاجعل البطل يتوقف بسرعة. عندما لا يكون أي مفتاح مضغوطًا، أبطئ velocity.x بمقدار friction * delta في كل إطار. وعندما يكون أحد المفاتيح مضغوطًا، واصل زيادة السرعة باستخدام acceleration.
جرّب بنفسك
extends CharacterBody2D
var speed = 220
var acceleration = 900
var friction = 2400
var gravity = 1000
var jump_velocity = -500
func _physics_process(delta):
velocity.y += gravity * delta
if Input.is_action_just_pressed("jump") and is_on_floor():
velocity.y = jump_velocity
var direction = Input.get_axis("move_left", "move_right")
velocity.x = move_toward(velocity.x, direction * speed, acceleration * delta)
move_and_slide()
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الإدخال والحركة
تدرّب بنفسك: Playground لـ Godot