Menu
CoddyTech
flag Ar iconالعربيةdown icon

الاحتكاك

جزء من قسم الإدخال والحركة في رحلة 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، فتوقفها خلال بضعة إطارات.

challenge icon

التحدي

متوسط

اجعل البطل يتوقف بسرعة. عندما لا يكون أي مفتاح مضغوطًا، أبطئ 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()
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الإدخال والحركة

تدرّب بنفسك: Playground لـ Godot