חיכוך
חלק מהיחידה קלט ותנועה במסלול ה-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 הוא true כשלא מחזיקים אף מקש.
friction קטן, כמו 300, גורם להחלקה כמו על קרח. ערך גדול, כמו 2400, עוצר בתוך כמה פריימים.
אתגר
בינוניגרום לגיבור לעצור במהירות. כשאף מקש לא לחוץ, האט את velocity.x עד ל־0 בקצב של friction * delta בכל פריים. כשמקש לחוץ, המשך להאיץ באמצעות acceleration.
נסו בעצמכם
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()
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה קלט ותנועה
5פרויקט: גיבור במשחק פלטפורמה
גיבור: ריצהגיבור: קפיצהתרגלו בעצמכם: Godot אונליין