チェックポイント
CoddyのUnityジャーニー「本格的なゲームを作る」セクションの一部。レッスン 50/56。
チャレンジ
中級奈落に落ちても、失うのは少しだけで済み、最初からやり直す必要はありません。これまでのレッスンの内容はすべて残してください。コース上に赤いポールが2本立っています。Checkpoint1とCheckpoint2で、それぞれにトリガーとCheckpointスクリプトが付いています。
Playerでは:
- Inspectorで設定するフィールド
fallY(-5)と、プレイヤーの開始位置を初期値とするリスポーン地点。 pointをリスポーン地点に設定するpublicメソッドSetCheckpoint(Vector3 point)。- プレイヤーが
fallYより下に落ちたら、リスポーン地点に戻し、velocityをクリアします。transform.positionを設定するだけでは不十分です。次のMoveは物理演算が最後に認識した位置から始まり、移動を取り消してしまいます。プレイヤーを移動している間はコントローラーをオフにし(controller.enabled = false)、移動後に再びオンにしてください。
Checkpointでは:
- プレイヤー(
Playerスクリプトが付いたオブジェクト)が初めてトリガーに入ったとき、ポールの位置をプレイヤーのリスポーン地点に設定し、ポールを緑色にし(Color.green)、Checkpoint reachedをログに出力します。 - もう一度入っても何も起こらないため、以前のチェックポイントによってリスポーン地点が戻ることはありません。
Playを押し、チェックポイントに到達してから奈落に飛び込み、その後Checkを押してください。
自分で試してみよう
using UnityEngine;
public class Checkpoint : MonoBehaviour
{
// この部分は後のレッスンで実装します。落下した後に戻ってくる場所を変える旗です。
}