חיכוך
חלק מהיחידה קלט ותנועה במסלול ה-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 הוא אמת כשלא מחזיקים אף מקש.
ערך קטן של friction, למשל 300, גורם להחלקה כמו על קרח. ערך גדול, למשל 2400, עוצר בתוך כמה פריימים.
אתגר
בינוניגרום לדמות לעצור במהירות כשתשחרר את הכפתור.
- העבר את השורה
move_towardמתחת ל־else:. - מעליה, תחת
if direction == 0:, האט אתvelocity.xעד ל־0באמצעותfriction * deltaעםmove_toward.
לחץ על "שחק", רוץ ושחרר: הדמות מחליקה מעט ואז עוצרת. לאחר מכן לחץ על "בדיקה".
נסו בעצמכם
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 אונליין