設置台を作る
Coddyの「Unityゲーム:タワーディフェンス」コースのレッスン 7/25。
プレイヤーは灰色のビルドパッドをクリックしてタワーを建てます。クリックは画面上の点なので、レイになります。Camera.main.ScreenPointToRayはカメラからその点を通るレイを返し、Physics.Raycastはレイが最初に当たったコライダー、つまりマウスの下にあるものを報告します。
Ray ray = Camera.main.ScreenPointToRay(Mouse.current.position.ReadValue());
if (Physics.Raycast(ray, out RaycastHit hit))
{
Debug.Log("Clicked " + hit.collider.name);
}レイは地面、道、木にも当たります。hit.collider.TryGetComponent(out BuildPad pad)は、当たったものがパッドかどうかを調べるので、それ以外をクリックしても何も起こりません。ここで使うすべてのシーンはInput Systemを使用しているため、Mouse.currentでマウスを読み取ります(using UnityEngine.InputSystem;)。
チャレンジ
中級パッドをクリックして、その上にArrowタワーを建てましょう。
BuildPadにpublic Tower tower;を追加します。BuildManagerに[SerializeField] private Tower towerPrefab;を追加します。Updateで、Mouse.current.leftButton.wasPressedThisFrameのときに、マウスを通るレイを飛ばします。towerがnullのBuildPadに当たったら、pad.tower = Instantiate(towerPrefab, pad.transform.position, Quaternion.identity);を設定します。
「プレイ」を押してパッドをクリックします。それぞれのパッドにタワーが1基ずつ建ちます。その後、「確認」を押します。
自分で試してみよう
using UnityEngine;
// 後で実装:建設パッドをクリックしてタワーを配置する機能、ショップ、タワーパネル。
public class BuildManager : MonoBehaviour
{
}
Unityゲーム:タワーディフェンスのすべてのレッスン
自分で練習してみよう: Unityプレイグラウンド