落下するブロック
CoddyのUnityジャーニー「Unityスクリプティングの基礎」セクションの一部。レッスン 61/67。
チャレンジ
中級ブロックが空から落ちてくるようになりました。前のレッスンの操縦を維持し、Runnerに以下を追加します。
- Inspectorで設定する3つのフィールド:
blockPrefab(GameObject:シーンでBlockプレハブを割り当てます)、spawnEvery(1)、fallSpeed(5)。 - 生成したすべてのブロックを記録する、
blocksという名前のList<GameObject>。 spawnEvery秒ごとに、x座標が-laneEdgeからlaneEdgeの範囲でランダム、y = 10、z = 0の位置にBlockを生成し、blocksに追加します。- 毎フレーム、
blocks内のすべてのブロックを、毎秒fallSpeed単位の速度で下方向に移動させます。
ブロックはまだランナーにダメージを与えません。Playを押して落ちる様子を見てから、Checkを押してください。
自分で試してみよう
using UnityEngine;
public class Runner : MonoBehaviour
{
[SerializeField] private float speed = 6f;
[SerializeField] private float laneEdge = 4f;
void Update()
{
Vector3 p = transform.position;
p.x += Input.GetAxisRaw("Horizontal") * speed * Time.deltaTime;
p.x = Mathf.Clamp(p.x, -laneEdge, laneEdge);
transform.position = p;
}
}