לבנים קשיחות
שיעור 7 מתוך 16 בקורס משחק Unity: שובר לבנים של Coddy.
יש לבנים שדורשות יותר ממכה אחת. כל לבנה שומרת ספירה של מספר המכות שנותרו לה: מכה מפחיתה אחת מהספירה, ורק המכה שמורידה אותה ל־0 שוברת את הלבנה ומעניקה ניקוד. עד אז צבע הלבנה משתנה, כך שהשחקן יכול לראות כמה היא עדיין עמידה.
מערך צבעים שממולא ב־Inspector ממפה את הספירה לצבע. איבר 0 הוא הצבע כשנותרה מכה אחת, איבר 1 כשנותרו שתיים, לכן הצבע עבור ספירה של n הוא איבר n - 1. מגן עם מטענים פועל באותו אופן:
public Color[] chargeColors; // רכיב 0: נותרה טעינה אחת
void ShowCharges(int charges)
{
GetComponent<Renderer>().material.color = chargeColors[charges - 1];
}קריאה של material נותנת ל־renderer הזה עותק משלו של החומר בפעם הראשונה, כך שמגן אחד, או לבנה אחת, משנים צבע בלי לצבוע מחדש כל עותק של ה־prefab. GameManager קובע כמה עמידה תהיה כל לבנה חדשה: int[] עם מספר אחד לכל שורה, החל מהשורה העליונה, מאפשר לשורה העליונה לספוג יותר מכות משאר השורות.
אתגר
בינוני- ב־
Brick, הוסףpublic int hits = 1ואתpublic Color[] colors. הסצנה ממלאת אתcolorsבכחול, כתום ואדום, עבור 1, 2 ו־3 פגיעות שנותרו. - כתוב
public void SetHits(int count): הפונקציה מגדירה אתhitsומציגה את צבע הלבנה המתאים. - שנה את
Hit(): הפחת 1 מ־hits. כשהערך מגיע ל־0 הלבנה נשברת ומתווספות נקודות כמו קודם; אחרת, היא רק מציגה את הצבע החדש שלה. - ב־
GameManager, הוסףpublic int[] rowHits = { 2, 1, 1, 1, 1 };והגדר לכל לבנה חדשה את מספר הפגיעותrowHits[row]באמצעותSetHits.
לחץ על Play, החלש לבנה כתומה בשורה העליונה, ואז לחץ על Check.
נסו בעצמכם
using UnityEngine;
public class Brick : MonoBehaviour
{
public int points = 10;
void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.CompareTag("Ball")) Hit();
}
public void Hit()
{
GameManager.Instance.BrickBroken(this);
Destroy(gameObject);
}
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.