एकता के लिए प्लेयर 3डी और 2डी वॉल जंप ट्यूटोरियल

वॉल जंपिंग, प्लेटफ़ॉर्मर्स और एक्शन गेम्स में प्रचलित एक मैकेनिक, खिलाड़ियों को दीवारों से छलांग लगाने की अनुमति देता है, जिससे नेविगेशन में जटिलता और बहुमुखी प्रतिभा जुड़ जाती है। इस ट्यूटोरियल का उद्देश्य दिए गए एफपीएस नियंत्रक में दीवार कूद को एकीकृत करना है। अंत तक, खिलाड़ी का पात्र 2डी और 3डी दोनों सेटिंग्स में दीवार से छलांग लगाने में सक्षम होगा।

'SC_FPSController' स्क्रिप्ट का उपयोग करके 3डी के लिए वॉल जंप लागू करना

Unity एफपीएस कंट्रोलर ट्यूटोरियल से दिए गए बेस कोड से शुरुआत करते हुए, हम वॉल जंप मैकेनिक का परिचय देंगे।

चरण 1: वॉल डिटेक्शन स्थापित करना

  • Unity उन वस्तुओं के नाम पर एक नई परत जोड़ें "Wall" जिनसे दीवार से छलांग लगाई जा सकती है।
  • क्लास को अपडेट करें 'SC_FPSController', जिसे आप हमारे Unity एफपीएस कंट्रोलर ट्यूटोरियल से निम्नलिखित वेरिएबल्स के साथ प्राप्त कर सकते हैं:
public LayerMask wallLayer;
public float wallJumpForce = 10f;
private bool isTouchingWall = false;

चरण 2: दीवार का पता लगाना

  • 'Update()' दीवार का पता लगाने की विधि के अंदर निम्नलिखित तर्क शामिल करें:
RaycastHit hit;
if (Physics.Raycast(transform.position, transform.right, out hit, 1f, wallLayer) || Physics.Raycast(transform.position, -transform.right, out hit, 1f, wallLayer))
{
    isTouchingWall = true;
}
else
{
    isTouchingWall = false;
}

उपरोक्त कोड में यह रेकास्ट प्लेयर के बायीं और दायीं ओर की दीवारों का पता लगाएगा।

चरण 3: 3डी के लिए वॉल जंप लागू करना

  • विधि के भीतर 'Update()', ग्राउंड जंप लॉजिक के बाद, डालें:
else if (Input.GetButton("Jump") && canMove && isTouchingWall)
{
    moveDirection.y = wallJumpForce;

    // This adds a bit of horizontal force opposite the wall for a more dynamic jump
    if (Physics.Raycast(transform.position, transform.right, 1f, wallLayer))
    {
        moveDirection += -transform.right * wallJumpForce / 2.5f; // Adjust the divisor for stronger/weaker push.
    }
    else if (Physics.Raycast(transform.position, -transform.right, 1f, wallLayer))
    {
        moveDirection += transform.right * wallJumpForce / 2.5f;
    }
}

उपरोक्त कोड में यह तर्क जाँचता है कि क्या खिलाड़ी जंप बटन दबा रहा है, हिल सकता है, और दीवार को छू रहा है। यदि ऐसा है, तो यह दीवार से दूर एक ऊर्ध्वाधर बल और थोड़ा क्षैतिज बल प्रदान करता है।

'CharacterController2D' स्क्रिप्ट का उपयोग करके 2डी के लिए वॉल जंप लागू करना

ट्यूटोरियल के लिए 2डी कैरेक्टर कंट्रोलर से दिए गए बेस कोड से शुरुआत करते हुए Unity, हम वॉल जंप मैकेनिक का परिचय देंगे।

चरण 1: वॉल डिटेक्शन स्थापित करना

  • Unity उन वस्तुओं के नाम पर एक नई परत जोड़ें "Wall" जिनसे दीवार से छलांग लगाई जा सकती है।
  • क्लास को अपडेट करें, जिसे आप ट्यूटोरियल के लिए हमारे 2डी कैरेक्टर कंट्रोलर से निम्नलिखित वेरिएबल्स के साथ 'CharacterController2D' प्राप्त कर सकते हैं: Unity
public LayerMask wallLayer;
public float wallJumpForce = 10f;
private bool isTouchingWall = false;

चरण 2: 2डी में दीवार का पता लगाना

  • 'Update()' दीवार का पता लगाने की विधि के अंदर निम्नलिखित तर्क शामिल करें:
RaycastHit2D wallHitLeft = Physics2D.Raycast(transform.position, Vector2.left, 1f, wallLayer);
RaycastHit2D wallHitRight = Physics2D.Raycast(transform.position, Vector2.right, 1f, wallLayer);

if (wallHitLeft.collider != null || wallHitRight.collider != null)
{
    isTouchingWall = true;
}
else
{
    isTouchingWall = false;
}

चरण 3: 2डी के लिए वॉल जंप लागू करना

  • विधि के भीतर 'Update()', ग्राउंड जंप लॉजिक के बाद, डालें:
if (Input.GetKeyDown(KeyCode.W) && isTouchingWall && !isGrounded)
{
    r2d.velocity = new Vector2(r2d.velocity.x, jumpHeight);
    if (wallHitLeft.collider != null)
    {
        r2d.AddForce(new Vector2(wallJumpForce, 0)); // Push to the right when wall is on the left
    }
    else if (wallHitRight.collider != null)
    {
        r2d.AddForce(new Vector2(-wallJumpForce, 0)); // Push to the left when wall is on the right
    }
}

पूछे गए प्रश्न:

  1. कोई पात्र किसी दीवार का पता कैसे लगा सकता है Unity? : एक पात्र रेकास्टिंग का उपयोग करके दीवारों का पता लगा सकता है । प्लेयर से वांछित दिशा में एक अदृश्य किरण को शूट करके, कोई यह निर्धारित कर सकता है कि कोई वस्तु, जैसे दीवार, इस किरण के साथ प्रतिच्छेद करती है या नहीं।
  2. 2डी और 3डी वॉल जंप कार्यान्वयन के बीच क्या अंतर है Unity? : में Unity, 2डी भौतिकी 'Physics2D' विधियों (जैसे 'Physics2D.Raycast()') का उपयोग करती है, जबकि 3डी भौतिकी 'Physics' विधियों (जैसे 'Physics.Raycast()') का उपयोग करती है। तर्क अपेक्षाकृत समान रहता है, लेकिन विधियाँ और दिशाएँ (2डी के लिए वेक्टर2, 3डी के लिए वेक्टर3) अलग-अलग होती हैं।

निष्कर्ष

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