Unityscript でWaitForSeconds関数を使用する方法を学んでおり、以前は成功していました。しかし今、私はスクリプトでそれを試しています。オブジェクトのヘルスが 0 に達したとき、オブジェクト (この場合はボックス) を画面外に移動し、設定された秒数後にランダムな位置に再表示します。画面上で、ヘルスをデフォルト値に戻します。私がこれまでに持っているものは次のとおりです。
function Update ()
{
if(health <= 0)
{
RespawnWaitTime ();
var position = Vector3(Random.Range(-6,6),Random.Range(-4.5,4.5),0); //this is the onscreen range
transform.position = position;
health = 2;
}
}
function RespawnWaitTime ()
{
var offScreen = Vector3(10,10,0);
transform.position = offScreen;
yield WaitForSeconds(2);
}
ただし、2 秒もまったく待ちません。ボックスは、関数がそこになかったかのように、新しい位置にまっすぐ進みます。画面外の位置に移動すると思いますが、待たずにまっすぐ戻ってきます。コードの一部を次のように変更して、待機がまったく適用されているかどうかをテストしました。
function RespawnWaitTime ()
{
var offScreen = Vector3(10,10,0);
transform.position = offScreen;
print("I'm over here!");
yield WaitForSeconds(2);
print("I'm coming back!");
}
テキストの最初のビットがすぐに印刷され、2 秒後にテキストの 2 番目のビットが期待どおりに表示されます。では、待機がボックスにも適用されないのはなぜですか? ご協力いただきありがとうございます。