إنشاء لعبة صيد في Unity

في هذا البرنامج التعليمي، سنستعرض عملية إنشاء لعبة صيد أساسية في Unity. ستتضمن هذه اللعبة عناصر مثل حركة اللاعب، والذكاء الاصطناعي للحيوانات، وميكانيكا التصويب، ونظام تسجيل النقاط. سنغطي:

  • إعداد المشروع والبيئة
  • إنشاء عناصر التحكم في اللاعب
  • تنفيذ الذكاء الاصطناعي الحيواني
  • إضافة آليات التصوير
  • إعداد نظام تسجيل النقاط

إعداد المشروع

لنبدأ بإعداد مشروع Unity جديد وإنشاء البيئة الخاصة به.

إنشاء المشروع

  1. افتح Unity وقم بإنشاء مشروع ثلاثي الأبعاد جديد.
  2. قم بتسمية مشروعك HuntingGame وانقر على Create.
  3. في نافذة المشروع، قم بإنشاء مجلدات باسم Scripts، وPrefabs، وMaterials لتنظيم أصولك.

إعداد البيئة

  1. في التسلسل الهرمي، انقر بزر الماوس الأيمن وحدد كائن ثلاثي الأبعاد > التضاريس لإنشاء تضاريس.
  2. قم بتخصيص التضاريس باستخدام أدوات التضاريس لرسم القوام وإضافة الأشجار ووضع العشب أو التفاصيل الأخرى.
  3. قم بإضافة بعض الكائنات ثلاثية الأبعاد مثل الصخور والأشجار لجعل البيئة أكثر واقعية.

إنشاء عناصر التحكم في اللاعب

بعد ذلك، سنقوم بإنشاء شخصية اللاعب وتنفيذ عناصر التحكم في الحركة المستندة إلى الفيزياء.

شخصية اللاعب

  1. في التسلسل الهرمي، انقر بزر الماوس الأيمن وحدد كائن ثلاثي الأبعاد > كبسولة لإنشاء شخصية لاعب.
  2. قم بإعادة تسمية الكبسولة إلى Player وضعها فوق التضاريس.
  3. أضف مكون Rigidbody إلى كائن Player للحركة المعتمدة على الفيزياء.
  4. أضف Camera كجزء من كائن Player ليكون بمثابة وجهة نظر اللاعب.

نص حركة اللاعب

using UnityEngine;

public class PlayerMovement : MonoBehaviour
{
    public float moveSpeed = 5f;
    public float rotationSpeed = 100f;
    private Rigidbody rb;

    void Start()
    {
        rb = GetComponent();
        rb.freezeRotation = true;
    }

    void FixedUpdate()
    {
        float moveHorizontal = Input.GetAxis("Horizontal");
        float moveVertical = Input.GetAxis("Vertical");

        Vector3 movement = transform.forward * moveVertical * moveSpeed * Time.deltaTime;
        rb.MovePosition(rb.position + movement);

        float rotation = Input.GetAxis("Mouse X") * rotationSpeed * Time.deltaTime;
        Quaternion turnRotation = Quaternion.Euler(0f, rotation, 0f);
        rb.MoveRotation(rb.rotation * turnRotation);
    }
}
  1. قم بإنشاء برنامج نصي C# جديد باسم PlayerMovement.cs في المجلد Scripts.
  2. قم بإرفاق البرنامج النصي PlayerMovement إلى الكائن Player.

تنفيذ الذكاء الاصطناعي الحيواني

سنعمل على إنشاء ذكاء اصطناعي حيواني بسيط للتجول في البيئة والتفاعل مع اللاعب.

حيوانات جاهزة

  1. استيراد أو إنشاء نموذج ثلاثي الأبعاد للحيوان (على سبيل المثال، الغزلان).
  2. اسحب النموذج إلى المشهد وضعه على التضاريس.
  3. انقر بزر الماوس الأيمن على النموذج في التسلسل الهرمي وحدد إنشاء فارغ لإنشاء كائن رئيسي. أطلق عليه اسم Deer.
  4. اسحب النموذج ثلاثي الأبعاد إلى الكائن Deer وأعد تعيين تحويله.
  5. احفظ الكائن Deer كنموذج جاهز عن طريق سحبه إلى المجلد Prefabs.

نص الذكاء الاصطناعي للحيوانات

using UnityEngine;
using UnityEngine.AI;

public class AnimalAI : MonoBehaviour
{
    public Transform[] waypoints;
    private NavMeshAgent agent;
    private int currentWaypoint = 0;

    void Start()
    {
        agent = GetComponent();
        agent.SetDestination(waypoints[currentWaypoint].position);
    }

    void Update()
    {
        if (agent.remainingDistance < agent.stoppingDistance)
        {
            currentWaypoint = (currentWaypoint + 1) % waypoints.Length;
            agent.SetDestination(waypoints[currentWaypoint].position);
        }
    }
}
  1. قم بإنشاء برنامج نصي C# جديد باسم AnimalAI.cs في المجلد Scripts.
  2. قم بإرفاق البرنامج النصي AnimalAI بالنموذج المسبق Deer.
  3. أضف مكون NavMeshAgent إلى النموذج الأولي Deer.
  4. قم بإعداد نقاط التوجيه في المشهد عن طريق إنشاء كائنات لعبة فارغة ووضعها في المكان المطلوب. قم بتعيين نقاط التوجيه هذه إلى المصفوفة waypoints في البرنامج النصي AnimalAI.

إضافة آليات التصوير

سننفذ قدرة اللاعب على إطلاق النار على الحيوانات.

نص التصوير

using UnityEngine;

public class PlayerShooting : MonoBehaviour
{
    public Camera playerCamera;
    public float range = 100f;
    public GameObject impactEffect;

    void Update()
    {
        if (Input.GetButtonDown("Fire1"))
        {
            Shoot();
        }
    }

    void Shoot()
    {
        RaycastHit hit;
        if (Physics.Raycast(playerCamera.transform.position, playerCamera.transform.forward, out hit, range))
        {
            AnimalAI animal = hit.transform.GetComponent();
            if (animal != null)
            {
                Destroy(hit.transform.gameObject);
            }

            GameObject impactGO = Instantiate(impactEffect, hit.point, Quaternion.LookRotation(hit.normal));
            Destroy(impactGO, 2f);
        }
    }
}
  1. قم بإنشاء برنامج نصي C# جديد باسم PlayerShooting.cs في المجلد Scripts.
  2. قم بإرفاق البرنامج النصي PlayerShooting إلى الكائن Player.
  3. قم بإنشاء تأثير تأثير (على سبيل المثال، نظام جسيمات) وقم بتعيينه إلى الحقل impactEffect في البرنامج النصي.

إعداد نظام تسجيل النقاط

سنضيف نظام تسجيل بسيط لتتبع عمليات الصيد الناجحة للاعب.

برنامج إدارة النتائج

using UnityEngine;
using UnityEngine.UI;

public class ScoreManager : MonoBehaviour
{
    public static int score = 0;
    public Text scoreText;

    void Update()
    {
        scoreText.text = "Score: " + score.ToString();
    }

    public static void AddScore(int points)
    {
        score += points;
    }
}
  1. قم بإنشاء برنامج نصي C# جديد باسم ScoreManager.cs في المجلد Scripts.
  2. قم بإرفاق البرنامج النصي ScoreManager إلى GameObject فارغ جديد يسمى GameManager.
  3. قم بإنشاء عنصر نص واجهة المستخدم لعرض النتيجة وقم بتعيينه إلى الحقل scoreText في البرنامج النصي ScoreManager.

تحديث نص التصوير لتتبع النتيجة

void Shoot()
{
    RaycastHit hit;
    if (Physics.Raycast(playerCamera.transform.position, playerCamera.transform.forward, out hit, range))
    {
        AnimalAI animal = hit.transform.GetComponent();
        if (animal != null)
        {
            Destroy(hit.transform.gameObject);
            ScoreManager.AddScore(10);
        }

        GameObject impactGO = Instantiate(impactEffect, hit.point, Quaternion.LookRotation(hit.normal));
        Destroy(impactGO, 2f);
    }
}

خاتمة

لقد أنشأنا لعبة صيد أساسية في Unity. قمنا بإعداد المشروع والبيئة، وإنشاء عناصر تحكم للاعب مع حركة تعتمد على الفيزياء، وتنفيذ الذكاء الاصطناعي للحيوانات، وإضافة آليات التصويب، وإعداد نظام تسجيل النقاط. يمكن توسيع هذه المعرفة الأساسية لتشمل سلوكيات أكثر تعقيدًا، وحيوانات إضافية، وميكانيكا لعب محسنة لتحسين لعبة الصيد الخاصة بك.