コインが戻ってくる
CoddyのUnityジャーニー「物理演算とゲームプレイ」セクションの一部。レッスン 30/63。
チャレンジ
中級収集したコインはrespawnDelay秒後に戻ってくるので、いつでも追いかけるものがあります。これは、1枚のコインのライフサイクル内で待機する処理、つまりコルーチンです。これまでの手順をすべて残したまま、Coinを変更しましょう。
public float respawnDelay = 3f;を追加します。- 非アクティブ化されたGameObjectはコルーチンを実行しないため、
SetActive(false)を使うと、コインを戻す前にコルーチンが停止してしまいます。別の方法でコインを隠しましょう。コインが描画されないようにRendererをオフにし、再び収集できないようにColliderもオフにします。 - 収集されたときに、コインを隠し、
respawnDelay秒待ってから両方を再びオンにするコルーチンを開始します。スコアはこれまでどおり加算します。
再生を押し、コインを収集して戻ってくるのを確認したら、チェックを押します。
自分で試してみよう
using UnityEngine;
public class Coin : MonoBehaviour
{
public int value = 1;
void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
{
other.GetComponent<Ball>().AddScore(value);
gameObject.SetActive(false);
}
}
}