Menu
CoddyTech
flag Ar iconالعربيةdown icon

ثلاث حيوات

جزء من قسم أساسيات البرمجة النصية في Unity في رحلة Unity على Coddy. الدرس 41 من 67.

challenge icon

التحدي

متوسط

ثلاث مرات إخفاق تُنهي اللعبة. أضف [SerializeField] private int lives (يضبطه المشهد على 3).

  • كل نجمة تفوتك تُنقص حياة، وتُسجّل Missed! Lives: 2 مع عدد الأرواح المتبقية.
  • عندما يصل عدد الأرواح إلى 0، سجّل أيضًا Game over وأوقف السكربت باستخدام enabled = false. يتوقف Unity عن استدعاء Update() في السكربت المعطّل، لذا تتوقف النجمة عن السقوط ولا يعود الماسك يتحرك.

ما زال التقاط النجوم يزيد النقاط ويُسرّعها. احتفظ بكل شيء من الخطوات السابقة.

جرّب بنفسك

using UnityEngine;

public class Catcher : MonoBehaviour
{
    [SerializeField] private float speed = 6f;
    [SerializeField] private Transform star;
    [SerializeField] private float fallSpeed = 3f;
    [SerializeField] private float speedUp = 0.5f;
    private int score;

    void Update()
    {
        float x = transform.position.x;
        if (Input.GetKey(KeyCode.RightArrow))
        {
            x += speed * Time.deltaTime;
        }
        if (Input.GetKey(KeyCode.LeftArrow))
        {
            x -= speed * Time.deltaTime;
        }
        x = Mathf.Clamp(x, -4f, 4f);
        transform.position = new Vector3(x, transform.position.y, transform.position.z);

        star.position += Vector3.down * fallSpeed * Time.deltaTime;

        if (Vector3.Distance(transform.position, star.position) < 1f)
        {
            score++;
            fallSpeed += speedUp;
            Debug.Log("Caught! Score: " + score);
            ResetStar();
        }
        else if (star.position.y < 0f)
        {
            ResetStar();
        }
    }

    void ResetStar()
    {
        star.position = new Vector3(Random.Range(-4f, 4f), 6f, 0f);
    }
}

جميع دروس أساسيات البرمجة النصية في Unity