効果と終了条件は決まりましたので、続いて、この条件のロジックを組むためには、どんな情報が必要となるかを何かを考えていきます。
「プレイヤーの移動速度が一時的に上がる」ということは「プレイヤーの移動速度を管理している変数を変更する」と考えることが出来ます。
この処理を考えたとき、オブジェクトの情報を管理できていなければ条件や書式として組み立てることが出来ません。
つまり、ゲームシーン内にプレイヤーの移動速度の情報があり(管理しているクラスが存在し)、新しい移動速度を設定しているクラスがなければ書式として構築できないためです。
アイテムの効果として速度アップの効果を考えるのであれば、「速度アップのアイテムを獲得したら」という条件も必要になります。
アイテムの獲得について Item タグを持つオブジェクトを作成した教材を参考にしましょう。獲得処理に関しては、以前に作成した、HPItem スクリプトなどが役に立つでしょう。
この処理内では、アイテムにプレイヤーが侵入したらという処理が記載されていますし、効果を適用する処理も記載されていますので、それを応用してください。
<応用する>
private void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
{
th = GameObject.Find("Tank").GetComponent<TankHealth>();
// TODO ここで効果を書いているので、ここを「速度アップ」に変える
// AddHP()メソッドを呼び出して「引数」にrewardを与えている。
//th.AddHP(reward);
// アイテムを破壊
Destroy(gameObject);
// effectを生成し、指定時間後に破壊するようにセットしておく
GameObject effect = Instantiate(effectPrefab, transform.position, Quaternion.identity);
Destroy(effect, 0.5f);
// SE 再生
AudioSource.PlayClipAtPoint(getSound, transform.position);
}
}
今回は条件を満たしたら(プレイヤーがアイテムを獲得したら)、速度アップの効果を適用することが目的ですので、
上記の HpItem の処理を参考に、速度アップの効果を適用するための変数や、効果を考えてみましょう。
あとは適用した速度アップの効果を「一定時間後に戻す」処理、および、速度アップの効果適用中に同じ速度アップを獲得した場合の処理が必要になります。
これらについても、どのように処理を管理をしていくかを考えていきます。