एकता में धीमी गति का प्रभाव

Unity में समय की गति को बदलना काफी आसान है, आपको बस Time.timeScale का मान बदलना है।

Time.timeScale Unity में एक मान है जो समय-निर्भर घटनाओं को नियंत्रित करता है, जैसे अपडेट फ़ंक्शन, एनिमेशन, कण, भौतिकी इत्यादि। जब टाइमस्केल 1 होता है, तो समय बीत जाता है वास्तविक समय जितनी तेजी से, 0.5 के साथ समय वास्तविक समय की तुलना में 2 गुना धीमी गति से गुजरता है, और 2.0 के साथ समय दोगुनी तेजी से गुजरता है। Time.timeScale 0 के मान के साथ किसी भी फ़्रेमरेट-निर्भर गणना को रोक देता है, नकारात्मक मानों को अनदेखा कर दिया जाता है।

हालाँकि, केवल टाइमस्केल का मान निर्धारित करना एक विश्वसनीय धीमी गति प्रभाव बनाने के लिए पर्याप्त नहीं है।

कुछ घटक जैसे AudioSource समय से प्रभावित नहीं होते हैं, लेकिन सौभाग्य से, उनकी पिच बदलना ऑडियो में धीमी गति का प्रभाव जोड़ने के लिए पर्याप्त है।

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

जब गेम धीमी गति में होता है, तो सामान्य गेमप्ले की तुलना में सब कुछ कम गति से चलता हुआ प्रतीत होता है। इसमें चरित्र की गतिविधियां, पर्यावरणीय अंतःक्रियाएं और यहां तक ​​कि प्रक्षेप्य या कण प्रभाव भी शामिल हो सकते हैं। प्रभाव अक्सर गेम के फ्रेम दर को समायोजित करके या गेम के कोड में समय-संबंधित चर में हेरफेर करके प्राप्त किया जाता है।

Unity गेम में धीमी गति का प्रभाव बनाने के लिए, हमें एक स्क्रिप्ट लिखनी होगी जो Time.timeScale के मान को बदल देगी और सभी सक्रिय ऑडियो स्रोतों की पिच को बदल देगी।

धीमी गति तेज गति के विपरीत है और खेल की गति को धीमा करने की प्रक्रिया है।

  • एक नई स्क्रिप्ट बनाएं, इसे 'SC_SlowMotionEffect' कहें, इसमें से सब कुछ हटा दें और फिर नीचे दिए गए कोड को इसके अंदर पेस्ट करें:

SC_SlowMotionEffect.cs

using UnityEngine;

public class SC_SlowMotionEffect : MonoBehaviour
{
    public float slowMotionTimeScale = 0.5f;
    public bool slowMotionEnabled = false;

    [System.Serializable]
    public class AudioSourceData
    {
        public AudioSource audioSource;
        public float defaultPitch;
    }

    AudioSourceData[] audioSources;

    // Start is called before the first frame update
    void Start()
    {
        //Find all AudioSources in the Scene and save their default pitch values
        AudioSource[] audios = FindObjectsOfType<AudioSource>();
        audioSources = new AudioSourceData[audios.Length];

        for (int i = 0; i < audios.Length; i++)
        {
            AudioSourceData tmpData = new AudioSourceData();
            tmpData.audioSource = audios[i];
            tmpData.defaultPitch = audios[i].pitch;
            audioSources[i] = tmpData;
        }

        SlowMotionEffect(slowMotionEnabled);
    }

    // Update is called once per frame
    void Update()
    {
        //Activate/Deactivate slow motion on key press
        if (Input.GetKeyDown(KeyCode.Q))
        {
            slowMotionEnabled = !slowMotionEnabled;
            SlowMotionEffect(slowMotionEnabled);
        }
    }

    void SlowMotionEffect(bool enabled)
    {
        Time.timeScale = enabled ? slowMotionTimeScale : 1;
        for (int i = 0; i < audioSources.Length; i++)
        {
            if (audioSources[i].audioSource)
            {
                audioSources[i].audioSource.pitch = audioSources[i].defaultPitch * Time.timeScale;
            }
        }
    }
}

यह सुनिश्चित करने के लिए कि Rigidbodies धीमी गति के प्रभाव के दौरान सुचारू रूप से सिम्युलेटेड हैं, उनके इंटरपोलेट मान को इंटरपोलेट या एक्सट्रपोलेट पर सेट करें।

सुझाए गए लेख
एकता में गति के लिए जॉयस्टिक नियंत्रक कैसे स्थापित करें
यूनिटी में नई एचडीआरपी जल प्रणाली का उपयोग कैसे करें
एफपीसी तैराक - गहन जल वातावरण के लिए एक व्यापक एकता परिसंपत्ति
यूनिटी में एक्सबॉक्स कंट्रोलर का उपयोग कैसे करें
एकता में लक्ष्य सूचक
एकता में कर्सर ट्रेल प्रभाव बनाने के लिए C# स्क्रिप्ट
एकता के लिए माउस लुक स्क्रिप्ट