時間内にクリア
CoddyのUnityジャーニー「物理演算とゲームプレイ」セクションの一部。レッスン 31/63。
チャレンジ
中級タイマーを追加します。前の手順の内容はすべてそのままにして、Ballに追加します。
public float timeLimit = 60f;(インスペクターで30に設定)とpublic float timeLeft;を追加します。timeLeftはpublicなのでインスペクターに表示され、カウントダウンを確認できます。- ゲーム開始時、
timeLeftはtimeLimitになります。0より大きい間は、毎フレーム、そのフレームにかかった時間の分だけ減ります。 - 0になると、正確に0のままになり、ボールはスコアとともに
Time's up! Score: 5を一度だけログに出力します。 - 時間切れになると、矢印キーを押してもボールは動かなくなります。
Playを押して、30秒で何点取れるか試してから、Checkを押してください。
自分で試してみよう
using UnityEngine;
public class Ball : MonoBehaviour
{
public float force = 10f;
public int score;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
float x = Input.GetAxis("Horizontal");
float z = Input.GetAxis("Vertical");
rb.AddForce(new Vector3(x, 0f, z) * force);
}
public void AddScore(int points)
{
score += points;
Debug.Log("Score: " + score);
}
}