אלכסונים מאוזנים
חלק מהיחידה קלט ותנועה במסלול ה-Godot של Coddy. שיעור 11 מתוך 28.
הגיבור מהשיעור הקודם מהיר מדי בתנועה באלכסון. למעלה וימינה נותנים מהירות של Vector2(200, -200). אורך הווקטור הזה הוא כ־283 פיקסלים, לא 200.
.normalized() שומר על הכיוון של וקטור והופך את אורכו ל־1 בדיוק. כופלים את זה במהירות:
var direction = Vector2(Input.get_axis("move_left", "move_right"), Input.get_axis("move_up", "move_down"))
velocity = direction.normalized() * speed
move_and_slide()כך התנועה בכל כיוון היא במהירות של 200 פיקסלים לשנייה. Vector2(0, 0) נשאר אפס אחרי נרמול, ולכן הגיבור עוצר.
Input.get_vector() כבר מחזירה כיוון שאורכו לכל היותר 1. גם velocity = Input.get_vector("move_left", "move_right", "move_up", "move_down") * speed מבטיחה תנועה מאוזנת באלכסון.
אתגר
בינוניגרמו לגיבור לנוע באותה מהירות גם באלכסון.
- שימו את שני הצירים בתוך
Vector2:var direction = Vector2(Input.get_axis("move_left", "move_right"), Input.get_axis("move_up", "move_down")). - במקום שתי שורות
velocity, הגדירו אתvelocityלערךdirection.normalized() * speed.
לחצו על "שחק": הגיבור נע במהירות של 200 פיקסלים לשנייה בכל כיוון, גם באלכסון. לאחר מכן לחצו על "בדיקה".
נסו בעצמכם
extends CharacterBody2D
var speed = 200
func _physics_process(delta):
velocity.x = Input.get_axis("move_left", "move_right") * speed
velocity.y = Input.get_axis("move_up", "move_down") * speed
move_and_slide()
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה קלט ותנועה
5פרויקט: גיבור במשחק פלטפורמה
גיבור: ריצהגיבור: קפיצהתרגלו בעצמכם: Godot אונליין