Menu
CoddyTech

設置台を作る

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;)。

challenge icon

チャレンジ

中級

パッドをクリックして、その上にArrowタワーを建てましょう。

  1. BuildPadにpublic Tower tower;を追加します。
  2. BuildManagerに[SerializeField] private Tower towerPrefab;を追加します。Updateで、Mouse.current.leftButton.wasPressedThisFrameのときに、マウスを通るレイを飛ばします。
  3. towerがnullのBuildPadに当たったら、pad.tower = Instantiate(towerPrefab, pad.transform.position, Quaternion.identity);を設定します。

「プレイ」を押してパッドをクリックします。それぞれのパッドにタワーが1基ずつ建ちます。その後、「確認」を押します。

自分で試してみよう

using UnityEngine;

// 後で実装:建設パッドをクリックしてタワーを配置する機能、ショップ、タワーパネル。
public class BuildManager : MonoBehaviour
{
}

Unityゲーム:タワーディフェンスのすべてのレッスン

自分で練習してみよう: Unityプレイグラウンド