16

私のスクリプト/ゲーム/物事はゲームオブジェクトを右に動かし、ダンス (私が作成したボタン) をクリックすると停止します。次に、カウンター (カウンターは必要ないかもしれませんが、3 秒待ちたい) が 3 のように達すると (ダンスをクリックするとカウンターが開始されます)、ゲームオブジェクトは右に進み続けると想定されます。

コードを修正できれば、それは素晴らしいことです。あなたがそれを修正し、私が間違っていたことを私に説明できれば、それはさらに素晴らしいことです. UnityでC#を学び始めました。

using System;
using UnityEngine;
using System.Collections;

public class HeroMouvement : MonoBehaviour
{
    public bool trigger = true;
    public int counter = 0;
    public bool timer = false;

    // Use this for initialization

    void Start()
    {
    }

    // Update is called once per frame

    void Update()
    {  //timer becomes true so i can inc the counter

        if (timer == true)
        {
            counter++;
        }

        if (counter >= 3)
        {
            MoveHero();//goes to the function moveHero
        }

        if (trigger == true)
            transform.Translate(Vector3.right * Time.deltaTime); //This moves the GameObject to the right
    }

    //The button you click to dance 
    void OnGUI()
    {
        if (GUI.Button(new Rect(10, 10, 50, 50), "Dance"))
        {
            trigger = false;
            timer = true;//now that the timer is set a true once you click it,The uptade should see that its true and start the counter then the counter once it reaches 3 it goes to the MoveHero function      
        }
    }

    void MoveHero()
    {  //Set the trigger at true so the gameobject can move to the right,the timer is at false and then the counter is reseted at 0.
        trigger = true;
        timer = false;
        counter = 0;
    }
}
4

6 に答える 6

4

ここで StartCoroutine を使用することをお勧めします。リンクは次のとおりです: http://docs.unity3d.com/ScriptReference/MonoBehaviour.StartCoroutine.html

元:

   void Foo () { StartCoroutine (Begin ()); }

   IEnumerator Begin ()
    {
        yield return new WaitForSeconds (3);

         // Code here will be executed after 3 secs
        //Do stuff here
    }
于 2015-01-05T01:18:10.050 に答える
3

最初にカウンタを float にします。に変更counter++;counter += Time.deltaTimeます。Update() はフレームごとに呼び出されるため、3 番目のフレームでカウンターは 3 になります。Time.deltaTime は、このフレームと前のフレームの間の時間を提供します。それを合計すると、タイマーのように機能します。

于 2013-06-05T00:52:44.800 に答える
-3

マルチスレッドの場合はこれを使用します:

    DateTime a = DateTime.Now;
    DateTime b = DateTime.Now.AddSeconds(2);

    while (a < b)
    {
        a = DateTime.Now;
    }

    bool = x;
于 2015-05-21T08:35:39.210 に答える