2

Update 関数で呼び出しているプロセスが発生するまでに遅延を与える必要があります。CoUpdate の回避策も試しました。これが私のコードです:-

function Start() 
{
  StartCoroutine("CoStart"); 
} 
function CoStart() : IEnumerator 
{ 
  while(true) 
  { 
    yield CoUpdate(); 
  } 
} 
function CoUpdate() 
{ 
  //I have placed the code of the Update(). 
  //And called the wait function wherever needed. 
} 
function wait() 
{ 
   checkOnce=1; //Whenever the character is moved. 
   yield WaitForSeconds(2); //Delay of 2 seconds. 
}

三人称コントローラー (別のオブジェクト) が境界の外に移動したときに、オブジェクトを移動する必要があります。コードに「yield」を含めました。しかし、発生している問題は次のとおりです。Update() でコードを指定したときに移動していたオブジェクトが移動していますが、停止していません。しかも上下に動いています。何が起こっているのかわからない!誰か助けてくれませんか?お願いします、ありがとう。

4

3 に答える 3

0

あなたが何を達成しようとしているのか完全にはわかりませんが、コルーチンの時間遅延を設定する方法を紹介できます。この例では、例で設定したのと同じように、単純なクールダウンで作業できます。ゲームの実行中に2秒ごとに継続的に何かを実行したい場合は、コードにわずかな変更を加えることができます。

function Start()
{
   StartCoroutine(CoStart);
}

function CoStart() : IEnumerator
{
   while(true)
   {
      //.. place your logic here

      // function will sleep for two seconds before starting this loop again
      yield WaitForSeconds(2);   
   }
}

他のロジックを使用して待機時間を計算することもできます

function Start()
{
   StartCoroutine(CoStart);
}

function CoStart() : IEnumerator
{
   while(true)
   {
      //.. place your logic here

      // function will sleep for two seconds before starting this loop again
      yield WaitForSeconds(CalculateWait());   
   }
}

function CalculateWait() : float
{

   // use some logic here to determine the amount of time to wait for the 
   // next CoStart cycle to start
   return someFloat;
}

私がマークを完全に逃した場合は、あなたが達成しようとしていることについてのより詳細な質問を更新してください。

于 2012-01-04T17:38:48.050 に答える
0

私はあなたの質問を100%理解しているとは確信していませんが、一方のオブジェクトが範囲外にあるときに移動を開始したい場合は、最初のオブジェクトで2番目のオブジェクトへの参照を作成し、最初のオブジェクトが範囲外にあるときに(最初のオブジェクトの更新でこれを確認してください) 2 番目のオブジェクトでパブリック関数 StartMove を呼び出します。

于 2016-10-19T12:35:22.960 に答える
-2

CoRoutines はお勧めしません。コンピューターがクラッシュすることがあります。変数を定義してデクリメントするだけです。例:

private float seconds = 5;

次に、遅延させたい場所で実行します。

seconds -= 1 * Time.deltaTime;
if(seconds <= 0) {your code to run}

これにより、5 秒の遅延が発生します。5 を任意の値に変更して、秒数を変更できます。また、1 の値を変更することで、減分を高速化することもできます (これは、同じ変数を使用して、2 つの遅延アクションを同期する場合に最も役立ちます)。

お役に立てれば。ハッピーコーディング:)

于 2013-10-12T19:54:32.447 に答える