// Update is called once per frame
   void Update()
   {

    Vector3 curPos = transform.position;

    // after mouse has been left clicked and user presses spacebar or up arrow keys to carry out animations.
    if (Input.GetKeyDown(KeyCode.Mouse0))
    {
        if (Input.GetMouseButtonDown(0))
        {

            //defining targetPos as the mouse click position
            Vector3 targetPos = Input.mousePosition;
            //outputting to console target position
            Debug.Log("Mouse Position " + targetPos);

            RaycastHit hit;
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            if (Physics.Raycast(ray, out hit))
            {
                //newPos is the position of where miffy is meant to go.
                newPos = new Vector3(hit.point.x, 0.1199974f, hit.point.z);
                //setting isMiffyMoving to true to carry out miffyMove() actions
                isMiffyMoving = true;
            }
            //if statements to detmine miffy's direction when shes moving and output to console.
            if (targetPos.x < curPos.x)
            {
                Debug.Log("Miffy is going left");
                left = true;
                isIdle = false;
            }
            else if (targetPos.x > curPos.x)
            {
                Debug.Log("Miffy is going right");
                left = false;
                isIdle = false;
            }

            if (targetPos.z < curPos.z)
            {
                Debug.Log("Miffy is going backward");
                forward = false;
                isIdle = false;
            }
            else if (targetPos.z > curPos.z)
            {
                Debug.Log("Miffy is going forward");
                forward = true;
                isIdle = false;
            }
            //setting isIdle to true is miffy is not moving
            if (isIdle)
            {
                Debug.Log("Miffy is idle");
                isIdle = true;
            }

            ////when up arrow key has been pressed animation stored in SpinJump will play
            if (Input.GetKeyDown(KeyCode.UpArrow))
            {
               anim.Play("SpinJump");
                Debug.Log("Working");
            }

            ////if spacebar has been pressed animation stored in cheer with play

            if (Input.GetKeyDown(KeyCode.Space))
            {
                anim.Play("cheer");
                Debug.Log("Working");
            }

        }

यह मेरा कोड है, कुंजी कुंजी प्रेस काम नहीं करेगी और "काम" आउटपुट केवल तभी काम करता है जब इसे माउस कुंजी के बाहर रखा जाता है।

मैंने कीप्रेस को अपनी विधि में डालने और माउस 0 दबाए जाने के बाद उन्हें अपडेट में कॉल करने का प्रयास किया है।

इससे पहले कि मैं एक चाल विधि जोड़ता जो चरित्र को माउस क्लिक पर ले जाता है, यह इस तरह से काम करता है

-1
EGS99 24 जिंदा 2020, 13:17
GetXXXDown केवल उस फ़्रेम पर सत्य लौटाता है जिसका उसे पता चला है। तो उन दो शर्तों को एक ही समय में सही होने के लिए, आपको बहुत सटीक होना होगा या वास्तव में धीमी एफपीएस होना चाहिए। या क्या मैं कुछ न कुछ भूल रहा हूं?
 – 
Everts
24 जिंदा 2020, 16:36
Ive ने पहले गेट माउस क्लिक से गेट की डाउन को हटा दिया। वे सांत्वना देने के लिए आउटपुट देते हैं कि वे काम कर रहे हैं, लेकिन उनके एनिमेशन अभी भी नहीं चलते हैं, वे बहुत जल्दी खेलते हैं।
 – 
EGS99
24 जिंदा 2020, 18:55

3 जवाब

सबसे बढ़िया उत्तर

मुझे माउस क्लिक से GetKeyDowns को हटाना पड़ा लेकिन फिर भी अपडेट के भीतर। मैंने आईडल = झूठा जोड़ा। बहुत सारी कार्रवाइयाँ एक साथ होने की कोशिश कर रही थीं जिससे घबराहट हुई।

//if up arrow is pressed  animation stored in Spin will play
    if (Input.GetKeyDown(KeyCode.UpArrow))
    {
        //setting idle to false to ensure it will not execute while spin is executing.
        isIdle = false;

        //setting cheer to false to ensure it will not execute while spin is executing.
        cheer = false;

        //setting spin to true.
        spin = true;
        skip = false;

        // playing animation for miffy to spin.
        anim.Play("SpinJump", 0, 0f);

        //testing if input is working by outputting text "working" to console.
        Debug.Log("Working");
    }

    ////if space has been pressed animation stored in Cheer with play
    if (Input.GetKeyDown(KeyCode.Space))
    {
        //setting idle to false to ensure it will not execute while cheer is executing.
        isIdle = false;

        //setting spin to false to ensure it will not execute while cheer is executing.
        spin = false;

        //setting cheer to true.
        cheer = true;
        skip = false;

        // playing animation for miffy to cheer.
        anim.Play("Cheer", 0, 0f);

        //testing if input is working by outputting text "working" to console.
        Debug.Log("Working");

    }
0
EGS99 28 जिंदा 2020, 12:32

यह काम नहीं करता है क्योंकि आपने कोडिशन के अंदर स्पेस बटन के लिए शर्त रखी है जहां आप माउस बटन क्लिक की जांच करते हैं .. वह डीबग.लॉग केवल तभी काम कर रहा है जब आप माउस दबा रहे हों और फिर उसी समय स्पेस को बिना उठाए हिट करें माउस क्लिक।

0
Sndpt 24 जिंदा 2020, 13:47
जब मैं पहली माउस क्लिक की स्थिति को हटाता हूं तो यह काम कर रहा है लेकिन एनीमेशन नहीं चलता है, बस घबराता है।
 – 
EGS99
24 जिंदा 2020, 13:53
क्या आप मुझे एनिमेशन पैनल और क्लिप सेटिंग्स दिखा सकते हैं?
 – 
Sndpt
24 जिंदा 2020, 14:12
केवल अगर दोनों नीचे जा रहे हैं एक ही फ्रेम में जो मेरे होने की बहुत कम संभावना है ..
 – 
derHugo
24 जिंदा 2020, 19:28

आपको इस तरह बदलना होगा:

void Update()
{

    Vector3 curPos = transform.position;

    // after mouse has been left clicked and user presses spacebar or up arrow keys to carry out animations.
    if (Input.GetKeyDown(KeyCode.Mouse0))
    {
        if (Input.GetMouseButtonDown(0))
        {

            //defining targetPos as the mouse click position
            Vector3 targetPos = Input.mousePosition;
            //outputting to console target position
            Debug.Log("Mouse Position " + targetPos);

            RaycastHit hit;
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            if (Physics.Raycast(ray, out hit))
            {
                //newPos is the position of where miffy is meant to go.
                newPos = new Vector3(hit.point.x, 0.1199974f, hit.point.z);
                //setting isMiffyMoving to true to carry out miffyMove() actions
                isMiffyMoving = true;
            }
            //if statements to detmine miffy's direction when shes moving and output to console.
            if (targetPos.x < curPos.x)
            {
                Debug.Log("Miffy is going left");
                left = true;
                isIdle = false;
            }
            else if (targetPos.x > curPos.x)
            {
                Debug.Log("Miffy is going right");
                left = false;
                isIdle = false;
            }

            if (targetPos.z < curPos.z)
            {
                Debug.Log("Miffy is going backward");
                forward = false;
                isIdle = false;
            }
            else if (targetPos.z > curPos.z)
            {
                Debug.Log("Miffy is going forward");
                forward = true;
                isIdle = false;
            }
            //setting isIdle to true is miffy is not moving
            if (isIdle)
            {
                Debug.Log("Miffy is idle");
                isIdle = true;
            }
        }

    }

    ////when up arrow key has been pressed animation stored in SpinJump will play
    if (Input.GetKeyDown(KeyCode.UpArrow))
    {
        anim.Play("SpinJump");
        Debug.Log("Working");
    }

    ////if spacebar has been pressed animation stored in cheer with play

    if (Input.GetKeyDown(KeyCode.Space))
    {
        anim.Play("cheer");
        Debug.Log("Working");
    }
}

इसका उपयोग करके आपका कोड ठीक से काम कर रहा है और आपको वही मिलता है जो आप चाहते हैं।

1
user12688476user12688476 24 जिंदा 2020, 14:02
धन्यवाद, लेकिन एनीमेशन अभी भी घबराता है और वास्तव में पूर्ण एनीमेशन नहीं चलाता है
 – 
EGS99
24 जिंदा 2020, 14:17
इस पर किस तरह की बात हो रही है क्या आप इसका छोटा सा वीडियो दे सकते हैं?
 – 
user12688476
24 जिंदा 2020, 14:24