יצירת משחק ציד באחדות
במדריך זה, נעבור על תהליך יצירת משחק ציד בסיסי ב-Unity. משחק זה יכלול אלמנטים כמו תנועת שחקנים, בינה מלאכותית של בעלי חיים, מכניקת ירי ומערכת ניקוד. אנו נכסה:
- הקמת הפרויקט והסביבה
- יצירת פקדי שחקן
- הטמעת בינה מלאכותית של בעלי חיים
- הוספת מכניקת ירי
- הקמת מערכת ניקוד
הגדרת הפרויקט
בואו נתחיל בהקמת פרויקט Unity חדש ויצירת הסביבה.
יצירת הפרויקט
- פתח את Unity וצור פרויקט תלת מימד חדש.
- תן שם לפרויקט שלך
HuntingGame
ולחץ עלCreate
. - בחלון הפרויקט, צור תיקיות בשם
Scripts
,Prefabs
ו-Materials
כדי לארגן את הנכסים שלך.
הגדרת הסביבה
- בהיררכיה, לחץ לחיצה ימנית ובחר
3D Object > Terrain
כדי ליצור שטח. - התאם אישית את השטח באמצעות
כלי שטח
כדי לצבוע טקסטורות, להוסיף עצים ולהציב דשא או פרטים אחרים. - הוסף כמה אובייקטים תלת מימדיים כמו סלעים ועצים כדי להפוך את הסביבה למציאותית יותר.
יצירת בקרות נגן
לאחר מכן, ניצור את דמות השחקן וניישם בקרות תנועה מבוססות פיזיקה.
דמות שחקן
- בהיררכיה, לחץ לחיצה ימנית ובחר
3D Object > Capsule
כדי ליצור דמות שחקן. - שנה את שם הקפסולה ל-
Player
והצב אותה מעל השטח. - הוסף רכיב
Rigidbody
לאובייקטPlayer
לתנועה מבוססת פיזיקה. - הוסף
מצלמה
בתור ילד של האובייקט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);
}
}
- צור סקריפט C# חדש בשם
PlayerMovement.cs
בתיקייהScripts
. - צרף את הסקריפט
PlayerMovement
לאובייקטPlayer
.
הטמעת בינה מלאכותית של בעלי חיים
ניצור בינה מלאכותית פשוטה של בעלי חיים כדי לשוטט בסביבה ולהגיב לשחקן.
בעלי חיים טרומיים
- ייבא או צור מודל תלת מימד עבור החיה (למשל, צבי).
- גרור את הדגם לתוך הסצנה והצב אותו על השטח.
- לחץ לחיצה ימנית על המודל בהיררכיה ובחר
Create Empty
כדי ליצור אובייקט אב. תן לזהצבי
. - גרור את המודל התלת-ממדי לתוך האובייקט
Deer
ואפס את ההמרה שלו. - שמור את האובייקט
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);
}
}
}
- צור סקריפט C# חדש בשם
AnimalAI.cs
בתיקייהScripts
. - צרף את הסקריפט
AnimalAI
ל-Deer
הקדם. - הוסף רכיב
NavMeshAgent
ל-Deer
הקדם. - הגדר נקודות ציון בסצנה על ידי יצירת 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);
}
}
}
- צור סקריפט C# חדש בשם
PlayerShooting.cs
בתיקייהScripts
. - צרף את הסקריפט
PlayerShooting
לאובייקטPlayer
. - צור אפקט השפעה (למשל, מערכת חלקיקים) והקצה אותו לשדה
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;
}
}
- צור סקריפט C# חדש בשם
ScoreManager.cs
בתיקייהScripts
. - צרף את הסקריפט
ScoreManager
ל-GameObject ריק חדש בשםGameManager
. - צור רכיב טקסט ממשק משתמש להצגת הניקוד והקצה אותו לשדה
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. הקמנו את הפרויקט והסביבה, יצרנו בקרות שחקנים עם תנועה מבוססת פיזיקה, הטמענו בינה מלאכותית של בעלי חיים, הוספנו מכניקת ירי והקמנו מערכת ניקוד. ניתן להרחיב את הידע הבסיסי הזה כך שיכלול התנהגויות מורכבות יותר, בעלי חיים נוספים ומכניקת משחק מעודנת כדי לשפר את משחק הציד שלך.