האצה הדרגתית
חלק מהיחידה קלט ותנועה במסלול ה-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()
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה קלט ותנועה
5פרויקט: גיבור במשחק פלטפורמה
גיבור: ריצהגיבור: קפיצהתרגלו בעצמכם: Godot אונליין