यूनिटी में एफपीएस प्लेयर में क्राउचिंग जोड़ना

क्राउचिंग तंत्र जोड़ने से विसर्जन गहरा हो सकता है और गेमप्ले को सामरिक गहराई मिल सकती है, खासकर प्रथम-व्यक्ति और स्टील्थ-आधारित गेम में। हमारे Unity FPS कंट्रोलर ट्यूटोरियल के आधार पर, यह गाइड दिखाता है कि Unity में एक सहज क्राउचिंग फीचर कैसे जोड़ा जाए।

आवश्यक शर्तें

कदम

  • class नाम 'SC_FPSController' में, Unity FPS कंट्रोलर ट्यूटोरियल से, क्राउचिंग को संभालने के लिए निम्नलिखित वेरिएबल जोड़ें:
public bool isCrouching = false;
public float crouchHeight = 0.5f;
public float crouchSpeed = 3.5f;
public float crouchTransitionSpeed = 10f;
private float originalHeight;
public float crouchCameraOffset = -0.5f;
private Vector3 cameraStandPosition;
private Vector3 cameraCrouchPosition;
  • 'CharacterController' की मूल ऊंचाई संग्रहीत करने और कैमरा स्थिति सेट करने के लिए 'Start()' विधि को संशोधित करें:
void Start()
{
    characterController = GetComponent<CharacterController>();
    originalHeight = characterController.height;

    // Define camera positions for standing and crouching
    cameraStandPosition = playerCamera.transform.localPosition;
    cameraCrouchPosition = cameraStandPosition + new Vector3(0, crouchCameraOffset, 0);

    // Lock cursor
    Cursor.lockState = CursorLockMode.Locked;
    Cursor.visible = false;
}
  • 'Update()' विधि में, क्राउच कुंजी दबाने की जांच करें और 'isCrouching' वेरिएबल को टॉगल करें:
if (Input.GetKeyDown(KeyCode.C) && canMove)
{
    isCrouching = !isCrouching;

    if (isCrouching)
    {
        characterController.height = crouchHeight;
        walkingSpeed = crouchSpeed;
    }
    else
    {
        characterController.height = originalHeight;
        walkingSpeed = 7.5f;
    }
}
  • पिछले ब्लॉक के बाहर, झुकने और खड़े होने के बीच कैमरे की स्थिति के लिए सहज परिवर्तन लागू करें:
if (isCrouching)
{
    playerCamera.transform.localPosition = Vector3.Lerp(playerCamera.transform.localPosition, cameraCrouchPosition, crouchTransitionSpeed * Time.deltaTime);
}
else
{
    playerCamera.transform.localPosition = Vector3.Lerp(playerCamera.transform.localPosition, cameraStandPosition, crouchTransitionSpeed * Time.deltaTime);
}
  • वर्तमान स्थिति के आधार पर खिलाड़ी की गति को समायोजित करें:
float curSpeedX = canMove ? (isRunning ? runningSpeed : (isCrouching ? crouchSpeed : walkingSpeed)) * Input.GetAxis("Vertical") : 0;
float curSpeedY = canMove ? (isRunning ? runningSpeed : (isCrouching ? crouchSpeed : walkingSpeed)) * Input.GetAxis("Horizontal") : 0;

प्रशन:

  1. झुकते समय कैमरा ट्रांज़िशन के लिए 'Vector3.Lerp()' का उपयोग क्यों करें?: 'Vector3.Lerp()' फ़ंक्शन का उपयोग दो वैक्टरों के बीच सुचारू रूप से इंटरपोलेशन करने के लिए किया जाता है। इस संदर्भ में, यह कैमरे को अचानक तड़कने के बजाय खड़े होने और झुकने की स्थिति के बीच आसानी से बदलाव करने की अनुमति देता है।
  2. 'crouchTransitionSpeed'? की क्या भूमिका है: 'crouchTransitionSpeed' यह निर्धारित करता है कि झुकने और खड़े होने की स्थिति में कैमरे की स्थिति के बीच संक्रमण कितनी जल्दी होता है। उच्च मूल्य के परिणामस्वरूप तेज़ संक्रमण होता है।
  3. क्या क्राउच कुंजी को अनुकूलित करना संभव है?: बिल्कुल। क्राउच कुंजी वर्तमान में 'C' ('KeyCode.C') पर सेट है। क्राउचिंग कुंजी को समायोजित करने के लिए इसे किसी वांछित 'KeyCode' से बदलें।

निष्कर्ष

Unity में एक सहज क्राउचिंग मैकेनिक को शामिल करना, जिसमें कोलाइडर आकार और कैमरा स्थिति दोनों को समायोजित करना शामिल है, खिलाड़ी के विसर्जन को महत्वपूर्ण रूप से बढ़ा सकता है। इस मार्गदर्शिका ने प्राकृतिक, तरल संक्रमण के साथ इसे प्राप्त करने की एक विधि प्रदान की है।

सुझाए गए लेख
यूनिटी में 2डी प्लेटफ़ॉर्मर कैरेक्टर कंट्रोलर में डबल जंप सपोर्ट जोड़ना
यूनिटी में कैमरे में हेड बॉबिंग इफ़ेक्ट जोड़ना
यूनिटी में थर्ड-पर्सन कैमरा
यूनिटी के लिए टॉप-डाउन प्लेयर कंट्रोलर ट्यूटोरियल
यूनिटी में मोबाइल टच इनपुट जॉयस्टिक
एकता में पार्कौर प्रणाली लागू करना
एकता के लिए प्लेयर 3डी और 2डी वॉल जंप ट्यूटोरियल