פסי בריאות
חלק מהיחידה בניית משחקים אמיתיים במסלול ה-Unity של Coddy. שיעור 10 מתוך 60.
סרגל שמתרוקן הוא תמונת ממשק משתמש שהאפשרות סוג תמונה שלה מוגדרת למילוי. ההגדרה הזאת מופיעה לאחר שמוגדרת לתמונה תמונת מקור; כשמוגדר None, ה־Inspector מסתיר אותה. האפשרות שיטת מילוי אופקית עם מוצא מילוי שמאל גורמת לסרגל להתכווץ לכיוון הקצה השמאלי שלו, ו־fillAmount, שערכו נע בין 0 ל־1, קובע איזה חלק ממנו מצויר. תמונת Image כהה מאחוריו מציגה את החלק הריק. Unity מגבילה את fillAmount, לכן הערך 1.4 מצייר סרגל מלא והערך -0.2 סרגל ריק.
fillAmount הוא החלק שנותר מהבריאות: הבריאות חלקי הערך המרבי שלה. כשמשתמשים בשדות מסוג int, זו חלוקה של מספרים שלמים, ו־350 / 500 שווה ל־0, לכן יש להמיר תחילה צד אחד ל־float. Image נמצא בתוך UnityEngine.UI. סרגל הבוס הזה מתעדכן אחרי כל פגיעה:
public Image bossBar;
public int bossMaxHp = 500;
private int bossHp = 500;
public void Hit(int damage)
{
bossHp = Mathf.Max(bossHp - damage, 0);
bossBar.fillAmount = (float)bossHp / bossMaxHp; // 350 / 500 = 0.7
}גם צבע הסרגל יכול להשתנות בהתאם לבריאות: bossBar.color = Color.Lerp(Color.red, Color.green, bossBar.fillAmount); הוא ירוק כשהסרגל מלא, והופך לאדום ככל שהוא מתרוקן.
אתגר
קלהצג את המגן ואת הבריאות של האביר בשני פסים.
- כתוב
ShowBars():shieldBar.fillAmount = (float)shield / maxShield;, וכך גם עבורhealthBarעםhpו-maxHp. קרא לה מתוךStart(). - ב-
TakeDamage, המגן סופגMathf.Min(amount, shield)ואת השאר מפחיתים מ-hp, אך לא מתחת ל-0. לאחר מכן קרא ל-ShowBars().
לחץ על "שחק" וצעד על הדוקרנים: פס המגן מתרוקן ראשון. לאחר מכן לחץ על "בדיקה".
נסו בעצמכם
using UnityEngine;
using UnityEngine.UI;
public class Knight : MonoBehaviour
{
public Image healthBar;
public Image shieldBar;
public int maxHp = 80;
public int maxShield = 40;
private int hp;
private int shield;
void Start()
{
hp = maxHp;
shield = maxShield;
// מלא את שני הפסים
}
public void TakeDamage(int amount)
{
// המגן סופג כמה שהוא יכול; השאר מופחת מ־hp, עד 0. לאחר מכן הצג את שני הפסים.
}
}
כל השיעורים ביחידה בניית משחקים אמיתיים
10פרויקט: משחק פלטפורמה תלת־ממדי
המסלולפלטפורמות נעותתרגלו בעצמכם: Unity אונליין