Menu
CoddyTech

انجُ واجمع النقاط

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

تُكمل هذه الخطوة لعبة تفادي الكتل: مؤقّتًا يُنشئ الكتل، وقائمةً تتحرك وتنظّف العناصر، واختبارًا للاصطدام، ونقاطًا تحسب الثواني. يؤدي وضع (int) قبل عدد عشري إلى حذف الجزء الكسري منه.

challenge icon

التحدي

متوسط

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

  1. أضف private float score; و[SerializeField] private float speedUp = 0.2f;.
  2. في بداية Update()، أضف Time.deltaTime إلى score وspeedUp * Time.deltaTime إلى fallSpeed.
  3. عند الاصطدام، سجّل "Game over! Score: " + (int)score. تحذف (int) الجزء الكسري: تظهر 12.7 على أنها 12.

اضغط «العب» وابقَ على قيد الحياة: يسجّل الاصطدام نتيجتك. ثم اضغط «تحقق».

جرّب بنفسك

using System.Collections.Generic;
using UnityEngine;

public class Runner : MonoBehaviour
{
    [SerializeField] private float speed = 6f;
    [SerializeField] private float laneEdge = 4f;
    [SerializeField] private GameObject blockPrefab;
    [SerializeField] private float spawnEvery = 1f;
    [SerializeField] private float fallSpeed = 5f;

    private List<GameObject> blocks = new List<GameObject>();
    private float timer;

    void Update()
    {
        Vector3 p = transform.position;
        p.x += Input.GetAxisRaw("Horizontal") * speed * Time.deltaTime;
        p.x = Mathf.Clamp(p.x, -laneEdge, laneEdge);
        transform.position = p;

        timer += Time.deltaTime;
        if (timer >= spawnEvery)
        {
            timer -= spawnEvery;
            Vector3 spot = new Vector3(Random.Range(-laneEdge, laneEdge), 10f, 0f);
            blocks.Add(Instantiate(blockPrefab, spot, Quaternion.identity));
        }

        for (int i = blocks.Count - 1; i >= 0; i--)
        {
            blocks[i].transform.position += Vector3.down * fallSpeed * Time.deltaTime;
            Vector3 b = blocks[i].transform.position;
            if (Mathf.Abs(b.x - transform.position.x) < 1f && Mathf.Abs(b.y - transform.position.y) < 1f)
            {
                Debug.Log("Game over");
                enabled = false;
                return;
            }
            if (b.y < -1f)
            {
                Destroy(blocks[i]);
                blocks.RemoveAt(i);
            }
        }
    }
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

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

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