שיגור
שיעור 2 מתוך 19 בקורס Unity: משחק שובר לבנים של Coddy.
הכדור ממתין על המשטח עד שהשחקן משגר אותו. עד אז, Update() מציבה אותו מעל המשטח בכל פריים, כך שהוא נע לכל מקום שאליו המשטח נע, ו־bool זוכר אם הוא כבר עף:
void Update()
{
if (launched) return;
transform.position = paddle.position + Vector3.up * 0.5f;
}ל־Rigidbody של הכדור אין כוח כבידה, לכן מהירות שמוגדרת פעם אחת משאירה אותו בתנועה ישרה. wasPressedThisFrame הוא true רק בפריים שבו מקש נלחץ, לכן יש לקרוא אותו בתוך Update(). כדי לנוע במהירות מדויקת בכל כיוון, יש להפוך את הכיוון לאורך של יחידה אחת בעזרת .normalized, ואז להכפיל: new Vector3(3f, 4f, 0f).normalized * 10f נע במהירות של 10 יחידות בשנייה.
אתגר
קלהכדור נשאר על המשטח עד שמקש הרווח משגר אותו.
- ב־
Ball, הוסףbool launched;ואתpublic void Launch(Vector3 direction):launched = true;ואתrb.linearVelocity = direction.normalized * speed; - ב־
Update(), החזר אם הכדור שוגר; אחרת, הצב את הכדור ב־paddle.position + Vector3.up * 0.5f. - כאשר
wasPressedThisFrameמתקיים עבור מקש הרווח, קרא ל־Launch(new Vector3(0.3f, 1f, 0f)).
לחץ על „שחק”, הזז את המשטח ואז לחץ על מקש הרווח: הכדור יעוף למעלה וייעצר בקיר הראשון (ההקפצה תגיע בהמשך). ואז לחץ על „בדיקה”.
נסו בעצמכם
using UnityEngine;
using UnityEngine.InputSystem;
public class Ball : MonoBehaviour
{
public Transform paddle;
public float speed = 9f;
Rigidbody rb;
void Awake()
{
rb = GetComponent<Rigidbody>();
}
// השלב הבא: הכדור נשאר על המחבט עד שלחיצה על Space משגרת אותו.
}
כל השיעורים ביחידה Unity: משחק שובר לבנים
תרגלו בעצמכם: Unity אונליין