יצירת בקר מגוף ראשון ב-Unity

מדריך זה ידריך אותך בבניית בקר פשוט מגוף ראשון ב-Unity. הבקר בגוף ראשון מאפשר לשחקנים לחקור עולם תלת מימד עם תנועה חלקה וסיבוב מצלמה. נשתמש בסקריפט C# בסיסי וברכיב CharacterController המובנה של Unity.

1. הגדרת הסצנה

התחל בהגדרת סביבת הסצנה הבסיסית עבור הבקר בגוף ראשון שלך:

  1. ב-Unity, צור סצנה תלת-ממדית חדשה.
  2. עבור אל GameObject > 3D Object > Plane כדי ליצור משטח קרקע.
  3. התאם את קנה המידה של המטוס כדי שיהיה גדול מספיק כדי שהשחקן יוכל להסתובב.
  4. עבור אל GameObject > 3D Object > Cube כדי להוסיף מכשולים או קירות לאינטראקציה איתם.

2. הוספת אובייקט הנגן

כדי לייצג את השחקן, נשתמש באובייקט קפסולה:

  • עבור אל GameObject > 3D Object > Capsule כדי להוסיף קפסולה לסצנה.
  • מקם את הקפסולה מעט מעל פני הקרקע (למשל, מיקום = (0, 1, 0)).
  • שנה את שם הקפסולה ל-Player.
  • הסר את רכיב Capsule Collider מכיוון ש-CharacterController יטפל בהתנגשויות.
  • הוסף רכיב CharacterController לאובייקט הנגן על ידי בחירת הנגן ולאחר מכן לחיצה על הוסף רכיב במפקח וחיפוש CharacterController.

3. כתיבת התסריט של הבקר בגוף ראשון

כעת, בואו ניצור סקריפט שיטפל בתנועת הנגן ובסיבוב המצלמה:

  1. בחלון הפרויקט, לחץ לחיצה ימנית ובחר Create > C# Script. תן לזה FirstPersonController.
  2. צרף את הסקריפט לאובייקט הנגן על ידי גרירתו מחלון הפרויקט לנגן בהיררכיה.

פתח את הסקריפט והחלף את התוכן בקוד הבא:

using UnityEngine;

public class FirstPersonController : MonoBehaviour
{
    public float moveSpeed = 5f;
    public float mouseSensitivity = 2f;
    public float gravity = -9.81f;

    private CharacterController controller;
    private Vector3 velocity;
    private Transform cameraTransform;

    void Start()
    {
        controller = GetComponent();
        cameraTransform = Camera.main.transform;
        cameraTransform.position = new Vector3(transform.position.x, transform.position.y + 1.5f, transform.position.z);
        cameraTransform.parent = transform; // Attach camera to player
    }

    void Update()
    {
        // Player movement
        float moveX = Input.GetAxis("Horizontal") * moveSpeed;
        float moveZ = Input.GetAxis("Vertical") * moveSpeed;
        Vector3 move = transform.right * moveX + transform.forward * moveZ;

        controller.Move(move * Time.deltaTime);

        // Apply gravity
        if (controller.isGrounded && velocity.y < 0)
        {
            velocity.y = -2f;
        }
        velocity.y += gravity * Time.deltaTime;
        controller.Move(velocity * Time.deltaTime);

        // Camera rotation
        float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity;
        float mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity;

        transform.Rotate(Vector3.up * mouseX);
        cameraTransform.Rotate(Vector3.left * mouseY);
    }
}

4. חיבור המצלמה

לתצוגת גוף ראשון, המצלמה צריכה להיות מחוברת לנגן:

  • בחר את המצלמה הראשית בהיררכיה.
  • מקם אותו מעט מעל אובייקט הנגן (למשל, Y = 1.5).
  • גרור את המצלמה אל אובייקט הנגן בהיררכיה כדי להפוך אותו לילד של הנגן. זה יגרום לו לעקוב אחר התנועות והסיבובים של השחקן.

5. הגדרת כניסות

מנהל הקלט של Unity משתמש בשמות צירים מוגדרים מראש כמו "אופקי" ו"אנכי" לתנועה, כמו גם "עכבר X" ו-"עכבר Y" לקלט עכבר. אלה מוגדרים אוטומטית, אבל אתה יכול להתאים את הרגישות ב-Edit > Project Settings > Input Manager.

6. בדיקת הבקר

כעת, כשהבקר מגוף ראשון מוכן, לחץ על כפתור ההפעלה כדי לבדוק אותו:

  • השתמש ב-W, A, S, D כדי להזיז את הנגן קדימה, אחורה ולצדדים.
  • הזז את העכבר כדי לסובב את המצלמה ולהסתכל מסביב.
  • ודא שכוח המשיכה פועל על ידי ירידה מכל חפץ מורם כדי לראות אם השחקן נופל באופן טבעי.

7. שיפור הבקר

אתה יכול לשפר עוד יותר את הבקר בגוף ראשון על ידי הוספת:

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

מַסְקָנָה

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