मैं अपने चरित्र को उच्च कोण वाली ढलानों को कैसे स्लाइड करूं?


9

मैं इस समय यूनिटी 3 डी में अपने चरित्र के आंदोलन पर काम कर रहा हूं । मैं उसे माउस कर्सर में अपेक्षाकृत स्थानांतरित करने में कामयाब रहा। मैंने 45 डिग्री की ढलान सीमा निर्धारित की है, जो चरित्र को पहाड़ों पर उच्च डिग्री के साथ चलने की अनुमति नहीं देता है। लेकिन वह अभी भी उन्हें कूद सकता है।

जब वह बहुत अधिक ढलान वाली जगहों पर कूदता है, तो मैं उसे फिर से नीचे स्लाइड करने का प्रबंधन कैसे करता हूं?

अग्रिम में धन्यवाद।

संपादित करें: मेरे मूल आंदोलन के कोड स्निपेट। यूनिटीजाइन का उपयोग करना; System.Collections का उपयोग कर;

public class BasicMovement : MonoBehaviour {
    private float speed;
    private float jumpSpeed;
    private float gravity;
    private float slopeLimit;
    private Vector3 moveDirection = Vector3.zero;

    void Start() 
    {
        PlayerSettings settings = GetComponent<PlayerSettings>();
        speed = settings.GetSpeed();
        jumpSpeed = settings.GetJumpSpeed();
        gravity = settings.GetGravity();
        slopeLimit = settings.GetSlopeLimit();
    }

    void Update() {
        CharacterController controller = GetComponent<CharacterController>();
        controller.slopeLimit = slopeLimit;

        if (controller.isGrounded) {
            moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
            moveDirection = transform.TransformDirection(moveDirection);
            moveDirection *= speed;

            if (Input.GetButton("Jump")) {
                moveDirection.y = jumpSpeed;
            }

        }
        moveDirection.y -= gravity * Time.deltaTime;
        controller.Move(moveDirection * Time.deltaTime);
    }
}

अधिक जानकारी की आवश्यकता है: क्या आप भौतिकी का उपयोग कर रहे हैं? क्या ये ढलान इलाके की व्यवस्था या कुछ और का उपयोग कर रहे हैं? क्या घटक या घटक आपके चरित्र को नियंत्रित कर रहे हैं? क्या यह 2 डी या 3 डी गेम है?
काइलोटन

क्या आपका मतलब स्लाइड है जब खिलाड़ी कूदने का प्रयास करता है, या जब वह एक कूद पूरा करता है और ढलान को हिट करता है?
टाइजकेन

@tyjkenn मेरा मतलब है कि जब वह कूदता है। सुपर मारियो 64 की तरह। जब वह जमीन पर उतरता है, और यह मैदान बहुत ऊँचा होता है, तो उसे एक बिंदु तक नीचे खिसकना चाहिए जहाँ कोण ढलान के बराबर हो।
कीनाबेल

@ कियलोतन अच्छी तरह से, मैं एकता को काफी नौसिखिया हूं। इसलिए, मैं जितना हो सके उतना अच्छा जवाब देने की कोशिश करता हूं। मैंने चरित्र नियंत्रक के साथ एक चरित्र बनाया - कोई कठोर शरीर नहीं। जब एक कुंजी दबाया जाता है तो मैंने उसे स्थानांतरित कर दिया और मैंने उसे कर्सर के लिए अपेक्षाकृत चलने दिया। मैंने एक इलाक़ा बनाया और बटन का इस्तेमाल किया (ओह माय, यह बेवकूफ लग रहा है) कुछ पहाड़ बनाने के लिए। यह 3 डी गेम होगा जिसमें वॉरक्राफ्ट III जैसा लुक और कैमरा स्टाइल है।
कीनाबेल

जवाबों:


1

ग्राउंड हिट होने पर आपका ब्रेक लगाना गलत है, आप बस वर्टिकल मूवमेंट को रोकते हैं, लेकिन ग्राउंड फ्लैट होने पर ही ग्राउंड हिट काम करता है।

आपको जो करना चाहिए moveDirection, वह हिट होने वाली सतह पर प्रोजेक्ट करता है, जिससे आपको नयापन मिलेगा moveDirection। यदि आपके पुस्तकालय में एक विमान या सतह पर एक वेक्टर प्रोजेक्ट करने का कार्य है जो आपको उपयोग करना चाहिए। यदि नहीं, तो आपको moveDirectionसतह के सामान्य से प्रक्षेपण को moveDirectionखुद से घटा देना चाहिए ।


ऐसे खेल हैं जो समान व्यवहार का उपयोग करते हैं, जैसे। स्किरिम, ब्रेकिंग के लिए बिल्कुल उसी विधि का उपयोग करें। समस्या यह है कि भले ही यह ध्वज भूमि पर न हो , चरित्र कूद सकता है।
अली

0

जंप करने से पहले जांच लें कि क्या चरित्र जमीन पर खड़ा है, मेरा मतलब है कि अगर वह ऊंचे कोण पर ढलान पर नहीं है। और भौतिकी इंजन के लिए कुछ और छोड़ दें।

आपके द्वारा प्रदान किए गए कोड के आधार पर मैं देख सकता हूं कि समस्या कहां है:

एकता लिपि संदर्भ के अनुसार , CharacterController.isGroundedकेवल तभी लौट रहा है जब चरित्र जमीन को छू रहा है। यह स्लोपेलिमिट के लिए जाँच नहीं करता है। थोड़ी खोज के बाद FPSWalkerEnhanced कुछ ऐसा प्रतीत होता है जो आपको जारी करता है।


ठीक है, मैं करते जाँच चरित्र हर कदम से पहले आधारित है या नहीं।
कीनाबेल

@keinabel तो वह कूदने में सक्षम नहीं होना चाहिए। एकमात्र तरीका वह कूद का उपयोग करके ढलानों को आगे बढ़ा सकता है यदि वह ठोस जमीन पर न हो तो भी कूद सकता है। मेरा मतलब है कि जैसे आप जांचते हैं कि वह ढलान पर नहीं चल सकता है। यदि वह ढलान के कारण कम से कम एक दिशा में नहीं चल सकता है तो उसे बिल्कुल भी नहीं कूदना चाहिए।
अली

अगर मैं अपनी पोस्ट में अपना 'आंदोलन कोड' जोड़ूं तो क्या यह मदद करेगा?
कीनाबेल

मुझे लगता है कि समस्या पर सीधे बात कर सकते हैं।
अली
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.