Menu
CoddyTech

الاحتكاك

جزء من قسم الإدخال والحركة في رحلة 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

التحدي

متوسط

اجعل البطل يتوقف بسرعة عندما تترك زر الحركة.

  1. ضع سطر move_toward تحت else:.
  2. فوقه، تحت if direction == 0:، أبطئ velocity.x إلى 0 باستخدام friction * delta مع move_toward.

اضغط على «العب»، وتحرك ثم اترك زر الحركة: سينزلق البطل قليلًا، ثم يتوقف. ثم اضغط على «تحقق».

جرّب بنفسك

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