האצה הדרגתית
חלק מהיחידה קלט ותנועה במסלול ה-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, ולכן הגיבור מאט עד לעצירה.
אתגר
בינוניגרום לגיבור להאיץ ולהאט בצורה חלקה.
- שמור את
Input.get_axis("move_left", "move_right")בתוךvar direction. - הגדר את
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()
כל השיעורים ביחידה קלט ותנועה
5פרויקט: גיבור במשחק פלטפורמה
גיבור: ריצהגיבור: קפיצהתרגלו בעצמכם: Godot אונליין