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

كُل

الدرس 6 من 14 في دورة لعبة الثعبان ثلاثية الأبعاد في Unity على Coddy.

تأكل الأفعى عندما ينتقل رأسها إلى الخلية التي يوجد فيها الطعام. كلاهما يقع على أعداد صحيحة، لذا فإن مقارنة موضعيهما باستخدام == آمنة: تعتبر Unity أن موضعين متساويان عند استخدام == على Vector3 إذا كانا أقرب من 0.00001، وإضافة خلايا كاملة لا تترك أبدًا فجوة بهذا الصغر.

تعرف الأفعى متى تنتقل؛ أما GameManager فيعرف مكان الطعام ويحافظ على النتيجة. لذا، بعد كل خطوة، تسأل الأفعى ويجيب GameManager: تُرجع IsFood(cell) قيمة bool، وتضيف Eat() نقطة وتنقل الطعام. تصل الأفعى إلى GameManager عبر Instance الثابتة، وهي المفردة التي تعرفت عليها في رحلة C# مع Unity.

تحقق من الخلية التي دخلها الرأس بعد الحركة. يُلتقط المفتاح الموجود على شبكة بالطريقة نفسها:

transform.position = next;
if (key.position == transform.position)
{
    keysHeld++;
    key.gameObject.SetActive(false);
}
challenge icon

التحدي

متوسط

في GameManager:

  1. أضف public static GameManager Instance;، واضبطه في Awake()، وأضف private int score;.
  2. اكتب public bool IsFood(Vector3 cell): تكون النتيجة true عندما يكون cell هو موضع الطعام.
  3. اكتب public void Eat(): أضف 1 إلى score واستدعِ MoveFood().

في Snake، في نهاية Step()، بعد تحريك الرأس: إذا كانت خلية الرأس تحتوي على الطعام، فاستدعِ Eat().

اضغط على Play ووجّه الثعبان إلى الطعام، ثم اضغط على Check.

جرّب بنفسك

using UnityEngine;

public class GameManager : MonoBehaviour
{
    public Snake snake;
    public GameObject foodPrefab;
    private Transform food;

    void Start()
    {
        food = Instantiate(foodPrefab).transform;
        MoveFood();
    }

    void MoveFood()
    {
        int x = Random.Range(-snake.edge, snake.edge + 1);
        int z = Random.Range(-snake.edge, snake.edge + 1);
        food.position = new Vector3(x, 0f, z);
    }
}
quiz iconاختبر نفسك

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

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