פריטים לאיסוף
חלק מהיחידה פיזיקה ומשחקיות במסלול ה-Unity של Coddy. שיעור 17 מתוך 71.
פריט שניתן לאסוף הוא אזור הפעלה עם סקריפט משלו. כשמשהו נכנס אליו, הפריט בודק אם זה השחקן, מעביר לו את ההשפעה שלו ומשמיד את עצמו. הסקריפט של השחקן שומר את התוצאה ומספק עבורה מתודה ציבורית. ערכת הבריאות הזו מרפאת כל דבר שיש לו סקריפט Health:
// HealthPack.cs
public int amount = 25;
void OnTriggerEnter(Collider other)
{
if (other.TryGetComponent(out Health health) && health.hp < 100)
{
health.Heal(amount);
Destroy(gameObject);
}
}// Health.cs, על השחקן
public int hp = 50;
public void Heal(int amount)
{
hp = Mathf.Min(hp + amount, 100);
Debug.Log("HP: " + hp);
}other.TryGetComponent(out Health health) הוא false עבור ארגז שמחליק לתוך הערכה, כך שרק אובייקט עם סקריפט Health יכול לאסוף אותה, ושחקן עם בריאות מלאה משאיר את הערכה למועד מאוחר יותר. הערכה מוצאת את השחקן דרך other, כך שאין צורך בהפניה מה-Inspector עבור אף ערכה, ושלב יכול להכיל חמישים מהן. Heal היא public כי סקריפט אחר קורא לה, ומגבלת 100 נמצאת ב-Health, המקום היחיד שמנהל את hp. Destroy(gameObject) מסיר את הערכה; Destroy(other.gameObject) היה מסיר את השחקן.
אתגר
קלגרום לארגזי התחמושת למלא מחדש את ה־Blaster (ammo 4, maxAmmo 10).
- ב־
Blaster.cs, הוסףpublic int AddAmmo(int amount):int taken = Mathf.Min(amount, maxAmmo - ammo);, הוסף אותו ל־ammo, תעד"Ammo: " + ammoוהחזר אתtaken. - ב־
AmmoCrate.cs, כאשרother.TryGetComponent(out Blaster blaster), קרא ל־blaster.AddAmmo(amount);ול־Destroy(gameObject);.
לחץ על "שחק" והתקדם ימינה: הקונסולה מציגה Ammo: 7, ואז Ammo: 10. לאחר מכן לחץ על "בדיקה".
נסו בעצמכם
using UnityEngine;
public class AmmoCrate : MonoBehaviour
{
public int amount = 3;
void OnTriggerEnter(Collider other)
{
// ה-Blaster של השחקן לוקח את התחמושת, והארגז נעלם
}
}
כל השיעורים ביחידה פיזיקה ומשחקיות
1גוף קשיח
כוח הכבידה והמסהדחיפה באמצעות AddForceקפיצה באמצעות מתקףFixedUpdate לפיזיקהמהירותגופים קינמטייםחזרה: משטח שיגור2התנגשויות
OnCollisionEnterבמה פגעתי?להישבר בעת פגיעהלעמוד על הקרקעניתור וחיכוךצורות Colliderסיכום: קיר שביר5פרויקט: מרוץ המטבעות
הכדור המתגלגלמטבעות לאיסוףתרגלו בעצמכם: Unity אונליין