ניקוד וניצחון
חלק מהיחידה פרויקטים במסלול ה-Godot של Coddy. שיעור 20 מתוך 36.
סלע גדול שווה 20 נקודות, וסלע קטן שווה 50. _on_rock_broken יודע מה הגודל, ולכן הוא מוסיף את הנקודות ומעדכן את $HUD/Score.
מנצחים כשלא נשארים סלעים. מתחילים את הספירה ב־4. מפחיתים אחד על כל סלע שנשבר, ומוסיפים שניים כשסלע גדול מתפצל:
if rock.size == 2:
rocks_left += 2
rocks_left -= 1
if rocks_left == 0:
$HUD/Message.text = "You win!"
get_tree().paused = trueסופרים כאן את שני הסלעים החדשים, ולא בתוך spawn_rock. spawn_rock רצה בסוף הפריים, ולכן הספירה תגיע לאפס לפני ששני הסלעים הקטנים האחרונים ייווצרו.
הסלעים, הקליעים והחללית ניתנים להשהיה. Main פועל תמיד.
אתגר
קשהצבור נקודות על הסלעים ונצח כשהם ייעלמו.
- ב־
main.gd, הוסףvar score = 0והצגScore: 0. - ניפוץ סלע גדול מוסיף 20 נקודות, וסלע קטן מוסיף 50. הצג את הניקוד.
- הוסף
var rocks_left = 4. הפחת אחד על כל סלע שנשבר, והוסף שניים כשסלע גדול מתפצל. כשנותר 0, הצגYou win!והשהה את המשחק.
לחץ על שחק ופנה את הסלעים: ההודעה You win! תופיע. ואז לחץ על בדיקה.
נסו בעצמכם
extends Node2D
const ROCK = preload("res://rock.tscn")
func _ready():
for i in 4:
spawn_rock(Vector2(randf_range(0, 640), 0), Vector2(randf_range(-90, 90), randf_range(40, 90)), 2)
func spawn_rock(where, velocity, size):
var rock = ROCK.instantiate()
rock.position = where
rock.velocity = velocity
rock.size = size
rock.broken.connect(_on_rock_broken)
add_child(rock)
func _on_rock_broken(rock):
if rock.size == 2:
spawn_rock.call_deferred(rock.position, rock.velocity.rotated(0.8) * 1.5, 1)
spawn_rock.call_deferred(rock.position, rock.velocity.rotated(-0.8) * 1.5, 1)
כל השיעורים ביחידה פרויקטים
2פרויקט: יורה אסטרואידים
סובבו את החלליתהפעילו את המנועתרגלו בעצמכם: Godot אונליין