סיכום: קפיצה כפולה
חלק מהיחידה בניית משחקים אמיתיים במסלול ה-Unity של Coddy. שיעור 43 מתוך 60.
בפרק הזה הזזנו את CharacterController באופן ידני: השתמשנו ב־Move להליכה, שמרנו את כוח הכבידה בשדה וחישבנו את הקפיצות לפי הגובה שלהן. הגיבור מקבל קפיצה נוספת באוויר.
אתגר
בינוניתנו לגיבור קפיצה וקפיצה אחת באוויר. ההליכה כבר כתובה.
- תחילה, כשהדמות על הקרקע:
airJumpUsed = false, ואם היא נופלת,verticalSpeedהופך ל--2f. - בעת
Input.GetButtonDown("Jump"): כשהדמות על הקרקע,verticalSpeed = Mathf.Sqrt(jumpHeight * -2f * gravity);; אחרת, אם!airJumpUsed, עושים אותו הדבר עםairJumpHeight, ומגדירים אתairJumpUsed. - לאחר מכן, מוסיפים את
gravity * Time.deltaTimeל-verticalSpeed.
לחצו על "שחק" ובצעו קפיצה כפולה אל המדף. לאחר מכן לחצו על "בדיקה".
נסו בעצמכם
using UnityEngine;
public class Hero : MonoBehaviour
{
public float speed = 5f;
public float gravity = -25f;
public float jumpHeight = 2f;
public float airJumpHeight = 1.28f;
CharacterController controller;
float verticalSpeed;
bool airJumpUsed;
void Start()
{
controller = GetComponent<CharacterController>();
}
void Update()
{
// אפסו על הקרקע, קפצו או בצעו קפיצה באוויר בלחיצה על Space, ואז הוסיפו את כוח הכבידה
Vector3 move = new Vector3(Input.GetAxisRaw("Horizontal"), 0f, Input.GetAxisRaw("Vertical")) * speed;
move.y = verticalSpeed;
controller.Move(move * Time.deltaTime);
}
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה בניית משחקים אמיתיים
10פרויקט: משחק פלטפורמה תלת־ממדי
המסלולפלטפורמות נעותתרגלו בעצמכם: Unity אונליין