Menu
CoddyTech

أسرع فأسرع

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

challenge icon

التحدي

متوسط

اجعل كل عملية التقاط تزيد سرعة سقوط النجوم.

  1. أضف [SerializeField] private float speedUp = 0.5f;.
  2. داخل عبارة if الخاصة بالالتقاط، أضف fallSpeed += speedUp; بجانب score++;. ليس في ResetStar(): فحالات عدم الالتقاط تستدعيها أيضًا.

اضغط على «العب» والتقط بعض النجوم: ستسقط كل نجمة بسرعة أكبر. ثم اضغط على «تحقق».

جرّب بنفسك

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);
            ResetStar();
        }
        else if (star.position.y < 0f)
        {
            ResetStar();
        }
    }

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

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

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