Menu
CoddyTech

اصطدام!

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

challenge icon

التحدي

متوسط

أنه اللعبة عندما تلامس كتلةٌ العداء.

  1. في حلقة الكتل، بعد تحريك كتلة، اقرأ موضعها على أنه Vector3 b.
  2. عندما يتحقق الشرط Mathf.Abs(b.x - transform.position.x) < 1f && Mathf.Abs(b.y - transform.position.y) < 1f، سجّل Game over، واضبط enabled = false; ثم نفّذ return;.

اضغط على «العب» ودع كتلةً تسقط عليك: ستعرض وحدة التحكم Game over وسيتوقف كل شيء. ثم اضغط على «تحقق».

جرّب بنفسك

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;
            if (blocks[i].transform.position.y < -1f)
            {
                Destroy(blocks[i]);
                blocks.RemoveAt(i);
            }
        }
    }
}

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

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