(1)プレーヤーの作成
- 「Capsule」「Main Camera」「Create Empty」の3つのオブジェクトで簡単にプレーヤーを作成
- 親子関係にして、一体となって動くようにする。

- Body部分は透明化しておく。


(2)照準器の作成
- 「画像データ(自由)」と「UI Image」オブジェクトを使って、Canvas上に照準器を作成
- 画像データは『白抜き』を推奨(敵を補足した場合、「色を変化」させるので)


(3)スクリプトその1(マウス操作で視点を変える)
- 新規にC#スクリプトを作成
- 名前を「MouseLook」に変更
- 下記のコードを書いてチェック
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MouseLook : MonoBehaviour
{
public Transform player;
private float mouseSensitivity = 200f;
private float xRotation = 0;
void Start()
{
// 画面上からカーソル表示を消す。
Cursor.lockState = CursorLockMode.Locked;
}
void Update()
{
float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity * Time.deltaTime;
float mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity * Time.deltaTime;
xRotation -= mouseY;
// 上下の視点移動に制限を加える
xRotation = Mathf.Clamp(xRotation, -90f, 90f);
transform.localRotation = Quaternion.Euler(xRotation, 0f, 0f);
// 左右の視点移動は、プレーヤーとの親子関係を利用する
player.Rotate(Vector3.up * mouseX);
}
}
(4)設定
- スクリプトを「Main Camera」オブジェクトに追加する。
- 空欄にPlayerオブジェクトをドラッグ&ドロップ

- これで設定完了
- ゲームを再生して確認
- マウスの動きで視点が、上下左右に移動すれば成功です。
- 上下の視点移動には制限があることも確認する。
(5)スクリプトその2(敵を補足したら照準器を赤く変化させる)
- MouseLookスクリプトに下記のコードを追加してチェック
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// ★追加(照準器の色の変化)
using UnityEngine.UI;
public class MouseLook : MonoBehaviour
{
public Transform player;
private float mouseSensitivity = 200f;
private float xRotation = 0;
// ★追加(照準器の色の変化)
public Image aimImage;
private RaycastHit enemyHit;
void Start()
{
Cursor.lockState = CursorLockMode.Locked;
}
void Update()
{
float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity * Time.deltaTime;
float mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity * Time.deltaTime;
xRotation -= mouseY;
xRotation = Mathf.Clamp(xRotation, -90f, 90f);
transform.localRotation = Quaternion.Euler(xRotation, 0f, 0f);
player.Rotate(Vector3.up * mouseX);
// ★追加(照準器の色の変化)
Ray ray = new Ray(transform.position, transform.forward);
if(Physics.Raycast(ray, out enemyHit, 100))
{
string hitName = enemyHit.transform.gameObject.tag;
if(hitName == "Enemy")
{
// 照準器を赤に変化させる
aimImage.color = Color.red;
}
else
{
aimImage.color = Color.white;
}
}
else
{
aimImage.color = Color.white;
}
}
}
(6)設定
- 空欄にAimイメージオブジェクトをドラッグ&ドロップ

- 好きな形のオブジェクトを作成
- 「Tag」に「Enemy」と設定(ポイント)


(7)再生&確認
- ゲームを再生
- 照準器で敵を補足した瞬間に照準器が赤色に変化すれば成功です。


(8)スクリプトその3(マウスクリックで補足した敵を破壊する)
- 補足した敵を、マウスの左クリックで破壊できるようにします。
- ただし、即座に破壊すると面白くないので、Invokeメソッドを使って『時間差』を生み出します。
- これによって、『砲弾の発射』と『着弾』にタイムラグが生じてリアイリティが向上します(ただし、全てギミック)
- MouseLookスクリプトに下記のコードを追加してチェック
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class MouseLook : MonoBehaviour
{
public Transform player;
private float mouseSensitivity = 200f;
private float xRotation = 0;
public Image aimImage;
private RaycastHit enemyHit;
// ★★追加(敵の破壊)
public AudioClip shotSound;
public AudioClip destroySound;
public GameObject effectPrefab;
void Start()
{
Cursor.lockState = CursorLockMode.Locked;
}
void Update()
{
float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity * Time.deltaTime;
float mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity * Time.deltaTime;
xRotation -= mouseY;
xRotation = Mathf.Clamp(xRotation, -90f, 90f);
transform.localRotation = Quaternion.Euler(xRotation, 0f, 0f);
player.Rotate(Vector3.up * mouseX);
Ray ray = new Ray(transform.position, transform.forward);
if(Physics.Raycast(ray, out enemyHit, 100))
{
string hitName = enemyHit.transform.gameObject.tag;
if(hitName == "Enemy")
{
aimImage.color = Color.red;
// ★★追加(敵の破壊)
// 左クリック
if (Input.GetMouseButtonDown(0))
{
// 発射音を出す
AudioSource.PlayClipAtPoint(shotSound, Camera.main.transform.position);
// Invokeメソッドで時間差を生み出す
Invoke("DestroyEnemy", 0.7f);
}
}
else
{
aimImage.color = Color.white;
}
}
else
{
aimImage.color = Color.white;
}
}
// ★★追加(敵の破壊)
void DestroyEnemy()
{
if(enemyHit.transform.gameObject)
{
GameObject effect = Instantiate(effectPrefab, enemyHit.point, Quaternion.identity);
Destroy(effect, 1.0f);
AudioSource.PlayClipAtPoint(destroySound, transform.position);
}
// 破壊すべきものは「Enemy」のTagが付いているものに限定する。
if(enemyHit.transform.CompareTag("Enemy"))
{
Destroy(enemyHit.transform.gameObject);
}
}
}
(9)設定
- 2種類の効果音(発射音と破壊音)と、破壊時のエフェクトを設定

(10)再生&確認
- ゲームを再生
- 敵をロックオンして左クリック
- 時間差で敵を破壊できれば成功です。


- 左クリックした後、すぐに照準器を移動させてみよう!
- すると、動かした地点に着弾します。
- この機能をうまく使えば、発射後、敵が移動回避すると『着弾失敗』というギミックを作ることができます。

