2016-08-29 11 views
0

このコードでは、異なるグループのプレイヤーを別の場所に再現しようとしています。コードはプレーヤーを望みの位置にうまくテレポートしますが、後でプレーヤーはデフォルトの再スポーン場所にテレポートされます。イベント時にコード行の実行を遅らせる

今のところうまくいきます。

player.Teleport()の実行を遅らせる方法はありますか?プレイヤーは、ゲームがプレイヤーをデフォルトの位置にテレポーテーションした後にテレポートすることができますか?

試行Thread.Sleepは、テレポーテーションプロセスの両方を遅らせるだけです。

public void OnPlayerRespawn(UnturnedPlayer player, Vector3 position, byte angle) 
{ 
    player.Teleport(HQLocation1); 
} 
+0

あなたは試してみてくださいのhttp:/ /gamedev.stackexchange.com/彼らはもっと良い答えを持っているかもしれません – Mfusiki

+1

あなたの提案をありがとうございますMfusiki、私の最初のここにいる!今すぐやってみよう。 –

+0

'OnPlayerRespawn'とは何ですか? – Enigmativity

答えて

1

これは、パラメータなしで行うことができる場合は、このような何かを行うことができます:

public void OnPlayerRespawn(UnturnedPlayer player, Vector3 position, byte angle) 
{  
    Invoke("TeleportPlayer", 5); 
} 

private void TeleportPlayer() 
{ 
    player.Teleport(HQLocation1); 
} 

あなたがパラメータを必要とする場合は、コルーチンを使用することができます。

public void OnPlayerRespawn(UnturnedPlayer player, Vector3 position, byte angle) 
{  
    StartCoroutine(TeleportPlayer(some parameters)); 
} 

private IEnumerator TeleportPlayer(some parameters) 
{ 
    // wait before doing other stuff 
    yield return new WaitForSeconds(5); 

    player.Teleport(HQLocation1); 
} 
+0

ああ、パラメータも必須です!ご回答いただきありがとうございます。コルーチンメソッドを試しましたが、いくつかのエラーを返します。 'TeleportPlayer(UnturnedPlayer)は、abstract、extern、またはpartialとマークされていないため、本文を宣言しなければならず、戻り値newは'無効なトークン "を返すかどうかをクラス、構造体またはインターフェースメンバー宣言で返します。 –

+0

気にしないで、今すぐ動作します!助けてくれてありがとう、それは私にとっては大変意味があります! <3 –

+0

私は助けることができる嬉しい:) –

0

ゲームは デフォルトの場所にプレイヤーをテレポートした後にプレイヤーがテレポートすることができますので、 「player.Teleport」の実行を遅らせるのいずれかの方法がありますか?

はい、Invoke機能を使用してください。最初のパラメータは呼び出す関数であり、2番目のパラメータは関数を呼び出す前にどれだけ時間を待つかです。これはCoroutineでも行うことができますが、Invokeはこの単純なタスクに適しています。

public void OnPlayerRespawn(UnturnedPlayer player, Vector3 position, byte angle) 
{ 
    Invoke("Teleport", 2); 
} 

void Teleport(){ 
    player.Teleport(HQLocation1); 
} 
関連する問題