Menu
CoddyTech

קפיצה כפולה

חלק מהיחידה קלט ותנועה במסלול ה-Godot של Coddy. שיעור 17 מתוך 28.

קפיצה כפולה מאפשרת לגיבור לקפוץ פעם נוספת באוויר. is_on_floor() לא יכולה לאפשר זאת, ולכן הגיבור סופר את הקפיצות שלו.

שמרו את הספירה במשתנה. הגדירו אותו ל־2 כשהגיבור על הקרקע, והחסירו ממנו 1 בכל קפיצה:

var jumps_left = 0

func _physics_process(delta):
	velocity.y += gravity * delta
	if is_on_floor():
		jumps_left = 2
	if Input.is_action_just_pressed("jump") and jumps_left > 0:
		velocity.y = jump_velocity
		jumps_left -= 1

הקפיצה הראשונה הופכת את jumps_left ל־1, וקפיצת האוויר הופכת אותו ל־0. לחיצה שלישית לא עושה דבר. הנחיתה מאפסת אותו בחזרה ל־2.

challenge icon

אתגר

בינוני

תן לגיבור לקפוץ פעמיים.

  1. הוסף var jumps_left = 0 למעלה, והגדר אותו ל־2 בזמן ש־is_on_floor().
  2. קפוץ כאשר jumps_left > 0 במקום is_on_floor(), והפחת אחד מ־jumps_left.

לחץ על "שחק": הגיבור קופץ פעמיים לפני שהוא נוחת, ולעולם לא שלוש פעמים. לאחר מכן לחץ על "בדיקה".

נסו בעצמכם

extends CharacterBody2D

var speed = 220
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
	if Input.is_action_just_released("jump") and velocity.y < 0:
		velocity.y = velocity.y / 2
	velocity.x = Input.get_axis("move_left", "move_right") * speed
	move_and_slide()
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

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

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