לבנים קשיחות
שיעור 7 מתוך 19 בקורס 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;(הסצנה מגדירה את הצבעים כחול, כתום ואדום) ואתSetHits(int count): הגדירו את מספר הפגיעות ואת הצבעcolors[hits - 1]. Hit()מפחיתה את מספר הפגיעות באחת: כשהוא מגיע ל־0, הלבנה נשברת ומתווספות נקודות; אחרת מוצג הצבע החדש.- ב־
GameManager, הוסיפו אתpublic int[] rowHits = { 2, 1, 1, 1, 1 };וקראו ל־brick.SetHits(rowHits[row])עבור כל לבנה חדשה.
לחצו על "שחק": השורה העליונה כתומה, והלבנים בה הופכות לכחולות כשפוגעים בהן. לאחר מכן לחצו על "בדיקה".
נסו בעצמכם
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);
}
}
כל השיעורים ביחידה Unity: משחק שובר לבנים
תרגלו בעצמכם: Unity אונליין