unity3d
एकता एनीमेशन
खोज…
रनिंग के लिए बेसिक एनिमेशन
यह कोड यूनिटी में एनीमेशन का एक सरल उदाहरण दिखाता है।
इस उदाहरण के लिए, आपके पास 2 एनीमेशन क्लिप होनी चाहिए; भागो और आइडल। उन एनिमेशनों को स्टैंड-इन-प्लेस गति होनी चाहिए। एक बार एनीमेशन क्लिप चुने जाने के बाद, एक एनिमेटर कंट्रोलर बनाएं। इस नियंत्रक को उस खिलाड़ी या गेम ऑब्जेक्ट में जोड़ें जिसे आप चेतन करना चाहते हैं।
विंडोज विकल्प से एनिमेटर विंडो खोलें। एनीमेटर विंडो में 2 एनीमेशन क्लिप खींचें और 2 राज्य बनाए जाएंगे। एक बार बनाने के बाद, 2 मापदंडों को जोड़ने के लिए बाएं पैरामीटर टैब का उपयोग करें, दोनों को बूल के रूप में। एक का नाम "PerformRun" और दूसरे का नाम "PerformIdle" है। "PerformIdle" को सही पर सेट करें।
रन करने के लिए और निष्क्रिय करने के लिए निष्क्रिय अवस्था बनाओ (छवि देखें)। आइडल पर क्लिक करें-> ट्रांस्फ़ॉर्म रन करें और इंस्पेक्टर विंडो में, डे-सेलेक्ट का चयन करें। दूसरे संक्रमण के लिए भी यही करें। आइडल के लिए-> संक्रमण चलाएं, एक शर्त जोड़ें: PerformIdle। रन-> आइडल के लिए, एक शर्त जोड़ें: PerformRun। गेम ऑब्जेक्ट के नीचे दिए गए C # स्क्रिप्ट को जोड़ें। यह अप बटन का उपयोग करके एनीमेशन के साथ चलना चाहिए और बाएं और दाएं बटन के साथ घूमना चाहिए।
using UnityEngine;
using System.Collections;
public class RootMotion : MonoBehaviour {
//Public Variables
[Header("Transform Variables")]
public float RunSpeed = 0.1f;
public float TurnSpeed = 6.0f;
Animator animator;
void Start()
{
/**
* Initialize the animator that is attached on the current game object i.e. on which you will attach this script.
*/
animator = GetComponent<Animator>();
}
void Update()
{
/**
* The Update() function will get the bool parameters from the animator state machine and set the values provided by the user.
* Here, I have only added animation for Run and Idle. When the Up key is pressed, Run animation is played. When we let go, Idle is played.
*/
if (Input.GetKey (KeyCode.UpArrow)) {
animator.SetBool ("PerformRun", true);
animator.SetBool ("PerformIdle", false);
} else {
animator.SetBool ("PerformRun", false);
animator.SetBool ("PerformIdle", true);
}
}
void OnAnimatorMove()
{
/**
* OnAnimatorMove() function will shadow the "Apply Root Motion" on the animator. Your game objects psoition will now be determined
* using this fucntion.
*/
if (Input.GetKey (KeyCode.UpArrow)){
transform.Translate (Vector3.forward * RunSpeed);
if (Input.GetKey (KeyCode.RightArrow)) {
transform.Rotate (Vector3.up * Time.deltaTime * TurnSpeed);
}
else if (Input.GetKey (KeyCode.LeftArrow)) {
transform.Rotate (-Vector3.up * Time.deltaTime * TurnSpeed);
}
}
}
}
एनीमेशन क्लिप्स बनाना और उपयोग करना
यह उदाहरण दिखाएगा कि गेम ऑब्जेक्ट्स या खिलाड़ियों के लिए एनीमेशन क्लिप कैसे बनाएं और उपयोग करें।
ध्यान दें, इस उदाहरण में उपयोग किए गए मॉडल यूनिटी एसेट स्टोर से डाउनलोड किए गए हैं। खिलाड़ी को निम्न लिंक से डाउनलोड किया गया था: https://www.assetstore.unity3d.com/en/#//content/21874 ।
एनिमेशन बनाने के लिए, पहले एनीमेशन विंडो खोलें। आप इसे Window और Select एनिमेशन पर क्लिक करके खोल सकते हैं या Ctrl + 6 दबा सकते हैं। गेम ऑब्जेक्ट का चयन करें, जिसे आप एनीमेशन क्लिप को लागू करना चाहते हैं, पदानुक्रम विंडो से, और फिर एनीमेशन विंडो पर क्रिएट बटन पर क्लिक करें।
अपने एनीमेशन को नाम दें (जैसे IdlePlayer, SprintPlayer, DyingPlayer आदि) और इसे सेव करें। अब, एनीमेशन विंडो से, Add Property बटन पर क्लिक करें। यह आपको समय के संबंध में गेम ऑब्जेक्ट या प्लेयर की संपत्ति को बदलने की अनुमति देगा। इसमें ट्रैनफॉर्म जैसे रोटेशन, पोजिशन और स्केल और कोई भी प्रॉपर्टी शामिल हो सकती है जो गेम ऑब्जेक्ट जैसे कोलाइडर, मेश बेंडर आदि से जुड़ी हो।
गेम ऑब्जेक्ट के लिए एक रनिंग एनीमेशन बनाने के लिए, आपको ह्युमनॉइड 3 डी मॉडल की आवश्यकता होगी। आप उपरोक्त लिंक से मॉडल डाउनलोड कर सकते हैं। एक नया एनीमेशन बनाने के लिए उपरोक्त चरणों का पालन करें। एक ट्रांस्फ़ॉर्म गुण जोड़ें और वर्ण पैर में से एक के लिए रोटेशन का चयन करें।
इस समय, गेम ऑब्जेक्ट प्रॉपर्टी में आपका प्ले बटन और रोटेशन वैल्यू लाल हो गए होंगे। रोटेशन X, Y और Z मान देखने के लिए ड्रॉप डाउन एरो पर क्लिक करें। डिफ़ॉल्ट एनीमेशन समय 1 सेकंड के लिए सेट है। एनिमेशन मूल्यों के बीच अंतर करने के लिए मुख्य फ्रेम का उपयोग करते हैं। चेतन करने के लिए, समय में विभिन्न बिंदुओं पर कुंजियाँ जोड़ें और इंस्पेक्टर विंडो से रोटेशन मान बदलें। उदाहरण के लिए समय पर रोटेशन मान 0.0 हो सकता है। समय के साथ 0.5 का मान X के लिए 20.0 हो सकता है। समय पर 1.0 का मान 0.0 हो सकता है। हम 1.0 पर हमारे एनीमेशन को समाप्त कर सकते हैं।
आपकी एनीमेशन लंबाई अंतिम कुंजी पर निर्भर करती है जिसे आप एनीमेशन में जोड़ते हैं। प्रक्षेप को चिकना बनाने के लिए आप अधिक कुंजियाँ जोड़ सकते हैं।
2 डी स्प्राइट एनीमेशन
स्प्राइट एनीमेशन में चित्रों या फ़्रेमों का एक मौजूदा अनुक्रम दिखाया गया है।
पहले परिसंपत्ति फ़ोल्डर में छवियों का एक क्रम आयात करें। या तो स्क्रैच से कुछ छवियां बनाएं या कुछ एसेट स्टोर से डाउनलोड करें। (यह उदाहरण इस मुफ्त संपत्ति का उपयोग करता है।)
किसी एकल एनीमेशन की प्रत्येक व्यक्तिगत छवि को संपत्ति फ़ोल्डर से दृश्य दृश्य तक खींचें। एकता नई एनीमेशन क्लिप के नामकरण के लिए एक संवाद दिखाएगी।
यह इसके लिए एक उपयोगी शॉर्टकट है:
- नई गेम ऑब्जेक्ट बनाना
- दो घटक (एक स्प्राइट रेंडरर और एक एनिमेटर) असाइन करना
- एनीमेशन नियंत्रक बनाना (और नए एनिमेटर घटक को उनके साथ जोड़ना)
- चयनित फ़्रेम के साथ एनीमेशन क्लिप बनाना
Play पर क्लिक करके एनीमेशन टैब में प्लेबैक का पूर्वावलोकन करें:
एक ही गेम ऑब्जेक्ट के लिए नए एनिमेशन बनाने के लिए एक ही विधि का उपयोग किया जा सकता है, फिर नए गेम ऑब्जेक्ट और एनीमेशन नियंत्रक को हटा सकता है। 3D एनीमेशन के साथ उसी तरह से उस ऑब्जेक्ट के एनीमेशन नियंत्रक में नया एनीमेशन क्लिप जोड़ें।
एनीमेशन घटता है
एनीमेशन कर्व्स आपको एक फ्लोट पैरामीटर को बदलने की अनुमति देता है क्योंकि एनीमेशन निभाता है। उदाहरण के लिए, यदि 60 सेकंड की लंबाई का एनीमेशन है और आप एक फ्लोट मान / पैरामीटर चाहते हैं, तो इसे एक्स कहिए, एनीमेशन के माध्यम से भिन्न करने के लिए (जैसे एनीमेशन समय = 0.0s; एक्स = 0.0, एनीमेशन समय = 30.0s पर; X = 1.0, एनीमेशन समय = 60.0s पर; X = 0.0)।
एक बार जब आपके पास फ्लोट मूल्य है, तो आप इसका उपयोग किसी अन्य तरीके से अनुवाद करने, घुमाने, स्केल करने या इसका उपयोग करने के लिए कर सकते हैं।
मेरे उदाहरण के लिए, मैं एक खिलाड़ी गेम ऑब्जेक्ट दिखाऊंगा। जब रन के लिए एनीमेशन चलता है, तो एनीमेशन के बढ़ने पर खिलाड़ी की अनुवाद की गति बढ़नी चाहिए। जब एनीमेशन अपने अंत तक पहुंच जाता है, तो अनुवाद की गति कम होनी चाहिए।
मेरे पास एक रनिंग एनीमेशन क्लिप है। क्लिप का चयन करें और फिर इंस्पेक्टर विंडो में, संपादित करें पर क्लिक करें।
एक बार वहाँ, घटता पर स्क्रॉल करें। वक्र जोड़ने के लिए + चिह्न पर क्लिक करें। वक्र का नाम उदाहरण के लिए फॉरवर्डरुंचेव। दाईं ओर लघु वक्र पर क्लिक करें। यह एक छोटी विंडो खोलेगा जिसमें डिफ़ॉल्ट वक्र होगा।
हम एक परवलयिक आकार का वक्र चाहते हैं जहां यह उगता है और फिर गिरता है। डिफ़ॉल्ट रूप से, लाइन पर 2 बिंदु हैं। आप वक्र पर डबल क्लिक करके अधिक अंक जोड़ सकते हैं। निम्नलिखित के समान आकृति बनाने के लिए बिंदुओं को खींचें।
एनिमेटर विंडो में, रनिंग क्लिप जोड़ें। इसके अलावा, वक्र के रूप में एक ही नाम के साथ एक फ़्लोट पैरामीटर जोड़ें।
जब एनीमेशन खेलता है, तो फ्लोट का मूल्य वक्र के अनुसार बदल जाएगा। निम्न कोड दिखाएगा कि फ्लोट मान का उपयोग कैसे करें:
using UnityEngine;
using System.Collections;
public class RunAnimation : MonoBehaviour {
Animator animator;
float curveValue;
void Start()
{
animator = GetComponent<Animator>();
}
void Update()
{
curveValue = animator.GetFloat("ForwardRunCurve");
transform.Translate (Vector3.forward * curveValue);
}
}
वक्रवैल्यू चर किसी भी समय वक्र (ForwardRunCruve) का मान रखता है। हम उस मूल्य का उपयोग अनुवाद की गति को बदलने के लिए कर रहे हैं। आप इस स्क्रिप्ट को प्लेयर गेम ऑब्जेक्ट में संलग्न कर सकते हैं।