Menu
CoddyTech

نجمة تلو الأخرى

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

challenge icon

التحدي

متوسط

أرسل نجمة جديدة بعد كل التقاط وكل إخفاق.

  1. اكتب void ResetStar() التي تضبط star.position = new Vector3(Random.Range(-4f, 4f), 6f, 0f);، واستدعها عند الالتقاط بدلًا من السطر القديم.
  2. بعد عبارة if الخاصة بالالتقاط، أضف else if (star.position.y < 0f) التي تستدعي ResetStar();. لا تُنفَّذ عبارة else if إلا عندما تكون عبارة if التي تسبقها خاطئة.

اضغط «العب»: ستسقط كل نجمة جديدة عند قيمة x جديدة. ثم اضغط «تحقق».

جرّب بنفسك

using UnityEngine;

public class Catcher : MonoBehaviour
{
    [SerializeField] private float speed = 6f;
    [SerializeField] private Transform star;
    [SerializeField] private float fallSpeed = 3f;
    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++;
            Debug.Log("Caught! Score: " + score);
            star.position = new Vector3(star.position.x, 6f, star.position.z);
        }
    }
}

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

تدرّب بنفسك: Playground لـ Unity