נהיגה
שיעור 1 מתוך 20 בקורס משחק Godot: מעגל ניאון של Coddy.
בקורס הזה תבנו משחק שלם אחד, תכונה אחת בכל שיעור: משחק מרוצים ניאוני במבט מלמעלה. תתחרו בשלוש מכוניות יריבות במשך שלוש הקפות במסלול זוהר.
בפרויקט יש שלושה סקריפטים בשבילכם: car.gd של המכונית, rival.gd של היריבות ו-race.gd של המרוץ. שני חלקים נוספים כבר ניתנו ונשארים מחוץ לטווח הראייה: המסלול, שמצייר את הדרך ועונה על שאלות לגביה, והסצנה. לא תצטרכו לשנות אותם.
היום המכונית לומדת לנהוג. היא שומרת velocity: כמה פיקסלים היא זזה בכל שנייה, ובאיזה כיוון. הכיוון שאליו המכונית פונה הופך לוקטור כיוון באמצעות rotation:
var forward := Vector2.RIGHT.rotated(rotation)כל עוד לוחצים על החץ למעלה, המהירות גדלה בכיוון הזה ב-accel בכל שנייה. הערך של Input.get_action_strength הוא 1.0 כשהמקש לחוץ ו-0.0 כשהוא לא לחוץ:
var throttle := Input.get_action_strength("move_up")
velocity += forward * throttle * accel * delta
velocity = velocity.limit_length(max_speed)
position += velocity * deltalimit_length שומר על מהירות של max_speed או פחות. הכפלה ב-delta, הזמן בשניות שעבר מאז הפריים הקודם, שומרת על אותה מהירות גם במסך מהיר וגם במסך איטי.
אתגר
קל- ב־
car.gd, החליפו אתpassבתוך_physics_processבשורות שלמעלה. - לבסוף, גרמו לאגזוז לזהור בזמן הנהיגה:
$Exhaust.emitting = throttle > 0.0. - לחצו על "שחק" והחזיקו את מקש החץ למעלה (או W).
נסו בעצמכם
extends Node2D
@export var accel := 260.0
@export var max_speed := 200.0
var velocity := Vector2.ZERO
func _physics_process(delta: float) -> void:
pass # drive here
כל השיעורים ביחידה משחק Godot: מעגל ניאון
תרגלו בעצמכם: Godot אונליין