יצירת משחק ציד באחדות

במדריך זה, נעבור על תהליך יצירת משחק ציד בסיסי ב-Unity. משחק זה יכלול אלמנטים כמו תנועת שחקנים, בינה מלאכותית של בעלי חיים, מכניקת ירי ומערכת ניקוד. אנו נכסה:

  • הקמת הפרויקט והסביבה
  • יצירת פקדי שחקן
  • הטמעת בינה מלאכותית של בעלי חיים
  • הוספת מכניקת ירי
  • הקמת מערכת ניקוד

הגדרת הפרויקט

בואו נתחיל בהקמת פרויקט Unity חדש ויצירת הסביבה.

יצירת הפרויקט

  1. פתח את Unity וצור פרויקט תלת מימד חדש.
  2. תן שם לפרויקט שלך HuntingGame ולחץ על Create.
  3. בחלון הפרויקט, צור תיקיות בשם Scripts, Prefabs ו-Materials כדי לארגן את הנכסים שלך.

הגדרת הסביבה

  1. בהיררכיה, לחץ לחיצה ימנית ובחר 3D Object > Terrain כדי ליצור שטח.
  2. התאם אישית את השטח באמצעות כלי שטח כדי לצבוע טקסטורות, להוסיף עצים ולהציב דשא או פרטים אחרים.
  3. הוסף כמה אובייקטים תלת מימדיים כמו סלעים ועצים כדי להפוך את הסביבה למציאותית יותר.

יצירת בקרות נגן

לאחר מכן, ניצור את דמות השחקן וניישם בקרות תנועה מבוססות פיזיקה.

דמות שחקן

  1. בהיררכיה, לחץ לחיצה ימנית ובחר 3D Object > Capsule כדי ליצור דמות שחקן.
  2. שנה את שם הקפסולה ל-Player והצב אותה מעל השטח.
  3. הוסף רכיב Rigidbody לאובייקט Player לתנועה מבוססת פיזיקה.
  4. הוסף מצלמה בתור ילד של האובייקט 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. לחץ לחיצה ימנית על המודל בהיררכיה ובחר Create Empty כדי ליצור אובייקט אב. תן לזה צבי.
  4. גרור את המודל התלת-ממדי לתוך האובייקט Deer ואפס את ההמרה שלו.
  5. שמור את האובייקט Deer בתור prefab על ידי גרירתו לתיקיה Prefabs.

תסריט AI של בעלי חיים

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. הגדר נקודות ציון בסצנה על ידי יצירת GameObjects ריקים והצבתם כרצונך. הקצה נקודות ציון אלו למערך נקודות ציון בסקריפט 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. הקמנו את הפרויקט והסביבה, יצרנו בקרות שחקנים עם תנועה מבוססת פיזיקה, הטמענו בינה מלאכותית של בעלי חיים, הוספנו מכניקת ירי והקמנו מערכת ניקוד. ניתן להרחיב את הידע הבסיסי הזה כך שיכלול התנהגויות מורכבות יותר, בעלי חיים נוספים ומכניקת משחק מעודנת כדי לשפר את משחק הציד שלך.