Menu
CoddyTech

נהיגה

שיעור 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 * delta

limit_length שומר על מהירות של max_speed או פחות. הכפלה ב-delta, הזמן בשניות שעבר מאז הפריים הקודם, שומרת על אותה מהירות גם במסך מהיר וגם במסך איטי.

challenge icon

אתגר

קל
  1. ב־car.gd, החליפו את pass בתוך _physics_process בשורות שלמעלה.
  2. לבסוף, גרמו לאגזוז לזהור בזמן הנהיגה: $Exhaust.emitting = throttle > 0.0.
  3. לחצו על "שחק" והחזיקו את מקש החץ למעלה (או 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 אונליין