एकता एफपीएस नियंत्रक

एफपीएस (या *एच2*फर्स्ट-पर्सन शूटर*एच3*) एक गेम है जहां मुख्य पात्र को पहले-व्यक्ति के दृष्टिकोण से नियंत्रित किया जाता है।

सामान्य नियंत्रण हैं चलने के लिए डब्ल्यू, ए, एस और डी, चारों ओर देखने के लिए माउस लुक, कूदने के लिए स्पेस, और तेजी से दौड़ने के लिए लेफ्ट शिफ्ट, जिससे खिलाड़ी को स्तर के चारों ओर स्वतंत्र रूप से मूव की अनुमति मिलती है।

इस पोस्ट में, मैं दिखाऊंगा कि Unity में एक FPS कंट्रोलर कैसे बनाया जाए जो कैमरा रोटेशन और प्लेयर मूवमेंट को हैंडल करेगा।

कदम

FPS नियंत्रक बनाने के लिए, नीचे दिए गए चरणों का पालन करें:

  • एक नया गेम ऑब्जेक्ट बनाएं (गेमऑब्जेक्ट -> खाली बनाएं) और इसे नाम दें "FPSPlayer"
  • एक नया कैप्सूल बनाएं (गेमऑब्जेक्ट -> 3डी ऑब्जेक्ट -> कैप्सूल) और इसे "FPSPlayer" ऑब्जेक्ट के अंदर ले जाएं
  • कैप्सूल से कैप्सूल कोलाइडर घटक निकालें और इसकी स्थिति को (0, 1, 0) में बदलें
  • मुख्य कैमरे को "FPSPlayer" ऑब्जेक्ट के अंदर ले जाएं और उसकी स्थिति को (0, 1.64, 0) में बदलें

  • एक नई स्क्रिप्ट बनाएं, इसे "SC_FPSController" नाम दें और नीचे दिए गए कोड को इसके अंदर पेस्ट करें:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[RequireComponent(typeof(CharacterController))]

public class SC_FPSController : MonoBehaviour
{
    public float walkingSpeed = 7.5f;
    public float runningSpeed = 11.5f;
    public float jumpSpeed = 8.0f;
    public float gravity = 20.0f;
    public Camera playerCamera;
    public float lookSpeed = 2.0f;
    public float lookXLimit = 45.0f;

    CharacterController characterController;
    Vector3 moveDirection = Vector3.zero;
    float rotationX = 0;

    [HideInInspector]
    public bool canMove = true;

    void Start()
    {
        characterController = GetComponent<CharacterController>();

        // Lock cursor
        Cursor.lockState = CursorLockMode.Locked;
        Cursor.visible = false;
    }

    void Update()
    {
        // We are grounded, so recalculate move direction based on axes
        Vector3 forward = transform.TransformDirection(Vector3.forward);
        Vector3 right = transform.TransformDirection(Vector3.right);
        // Press Left Shift to run
        bool isRunning = Input.GetKey(KeyCode.LeftShift);
        float curSpeedX = canMove ? (isRunning ? runningSpeed : walkingSpeed) * Input.GetAxis("Vertical") : 0;
        float curSpeedY = canMove ? (isRunning ? runningSpeed : walkingSpeed) * Input.GetAxis("Horizontal") : 0;
        float movementDirectionY = moveDirection.y;
        moveDirection = (forward * curSpeedX) + (right * curSpeedY);

        if (Input.GetButton("Jump") && canMove && characterController.isGrounded)
        {
            moveDirection.y = jumpSpeed;
        }
        else
        {
            moveDirection.y = movementDirectionY;
        }

        // Apply gravity. Gravity is multiplied by deltaTime twice (once here, and once below
        // when the moveDirection is multiplied by deltaTime). This is because gravity should be applied
        // as an acceleration (ms^-2)
        if (!characterController.isGrounded)
        {
            moveDirection.y -= gravity * Time.deltaTime;
        }

        // Move the controller
        characterController.Move(moveDirection * Time.deltaTime);

        // Player and Camera rotation
        if (canMove)
        {
            rotationX += -Input.GetAxis("Mouse Y") * lookSpeed;
            rotationX = Mathf.Clamp(rotationX, -lookXLimit, lookXLimit);
            playerCamera.transform.localRotation = Quaternion.Euler(rotationX, 0, 0);
            transform.rotation *= Quaternion.Euler(0, Input.GetAxis("Mouse X") * lookSpeed, 0);
        }
    }
}
  • SC_FPSController स्क्रिप्ट को "FPSPlayer" ऑब्जेक्ट में संलग्न करें (आप देखेंगे कि इसमें कैरेक्टर कंट्रोलर नामक एक अन्य घटक भी जोड़ा गया है, इसके केंद्र मान को (0, 1, 0) में बदलें)
  • SC_FPSController में प्लेयर कैमरा वेरिएबल को मुख्य कैमरा असाइन करें

एकता एफपीएस नियंत्रक

एफपीएस नियंत्रक अब तैयार है!

स्रोत
📁FPSController.unitypackage53.91 KB
सुझाए गए लेख
एकता के लिए प्लेयर 3डी और 2डी वॉल जंप ट्यूटोरियल
यूनिटी में एफपीएस प्लेयर में क्राउचिंग जोड़ना
एकता मोबाइल टच कंट्रोल कैसे बनाएं
चरित्र नियंत्रक एकता में कठोर पिंडों को धकेलने की क्षमता कैसे जोड़ें
एकता में खिलाड़ी आंदोलन बनाना
यूनिटी में कैरेक्टर कंट्रोलर में मूविंग प्लेटफ़ॉर्म सपोर्ट कैसे जोड़ें
यूनिटी के लिए रिगिडबॉडी-आधारित प्लैनेटरी प्लेयर कंट्रोलर