Menu
CoddyTech

האצה הדרגתית

חלק מהיחידה קלט ותנועה במסלול ה-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, ולכן הגיבור מאט עד לעצירה.

challenge icon

אתגר

בינוני

גרום לגיבור להאיץ ולהאט בצורה חלקה.

  1. שמור את Input.get_axis("move_left", "move_right") בתוך var direction.
  2. הגדר את velocity.x באמצעות move_toward(velocity.x, direction * speed, acceleration * delta).

לחץ על ״שחק״ והחזק מקש חץ: הגיבור צובר מהירות עד 220, ומאט כשמשחררים את המקש. לאחר מכן לחץ על ״בדיקה״.

נסו בעצמכם

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()

כל השיעורים ביחידה קלט ותנועה

תרגלו בעצמכם: Godot אונליין