التسارع تدريجيًا
جزء من قسم الإدخال والحركة في رحلة Godot على Coddy. الدرس 18 من 28.
يصل البطل إلى سرعته القصوى خلال إطار واحد ويتوقف خلال إطار واحد. وهذا يبدو متصلبًا.
تُحرّك move_toward(from, to, step) العدد from باتجاه to بمقدار لا يتجاوز step، ولا تتجاوزه أبدًا. قيمة move_toward(0, 220, 15) هي 15. وعند تكرار ذلك في كل إطار، تكون النتيجة 30، ثم 45، وهكذا حتى 220.
استخدمها على velocity.x، باتجاه السرعة التي تطلبها المفاتيح:
var direction = Input.get_axis("move_left", "move_right")
velocity.x = move_toward(velocity.x, direction * speed, acceleration * delta)acceleration هي مقدار السرعة المكتسبة في الثانية، لذا تُضرب في delta. عند استخدام 900، يصل البطل إلى 220 في نحو ربع ثانية. وعندما لا يكون أي مفتاح مضغوطًا، يكون الهدف هو 0، فيتباطأ البطل حتى يتوقف.
التحدي
متوسطاجعل سرعة البطل تزداد وتتباطأ بسلاسة. عيّن velocity.x باستخدام move_toward، باتجاه direction * speed، بمقدار acceleration * delta في كل إطار.
جرّب بنفسك
extends CharacterBody2D
var speed = 220
var acceleration = 900
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
velocity.x = Input.get_axis("move_left", "move_right") * speed
move_and_slide()
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الإدخال والحركة
تدرّب بنفسك: Playground لـ Godot