【初心者向け】Unityでシューティングゲームの作り方-part8

こんにちは、ユニブレです!

今回Udemyのテキスト教材用に
シューティングゲームの記事を作成しました!

共同製作者は
Unityインストラクターしまづさんです

 

初心者の方でも真似て作れる様に、
簡潔にわかりやすく書いていきます。

 

Part8では

  • Playerの移動制御
  • 画面外で敵と弾の破壊
  • 敵の左右移動

を記事にしました。

 

PR

 

環境は
MacOS Catalina:ver 10.15.4
Unity:ver2019.4.3f1

です。

Playerの移動制御

移動できる範囲を制限するにあたり、
SceneViewで機体を動かしてPositionの数値を確かめましょう!

上記数値を配慮した上で、
PlayerShipに下記コードを記述して下さい。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerShip : MonoBehaviour
{
//弾を発射するオブジェクトの位置を取得
public Transform firePoint;
//弾をオブジェクトとして取得
public GameObject bulletPrefab;
//スピーカーを取得する入れ物
AudioSource audioSource;
public AudioClip shotSE;
void Start()
{
//用意した入れ物にAudioSourceを入れる
audioSource = GetComponent<AudioSource>();
}
// 一定時間(0.02s)ごとに実行される関数
void Update()
{
Move();
Shot();
}
//移動の処理
void Move()
{
//横軸の値を返す
float x = Input.GetAxisRaw("Horizontal");
//縦軸の値を返す
float y = Input.GetAxisRaw("Vertical");
//移動制御**************************今回追加
Vector3 nextPosition = transform.position + new Vector3(x, y, 0) * Time.deltaTime * 4f;
//移動できる範囲をMathf.Clampで範囲指定して制御
nextPosition = new Vector3(
Mathf.Clamp(nextPosition.x,-2.9f,2.9f),
Mathf.Clamp(nextPosition.y, -2f, 2f),
nextPosition.z
);
//現在位置にnextPositionを+
transform.position = nextPosition;
}
//弾の処理
void Shot()
{
if (Input.GetKeyDown(KeyCode.Space))
{
//(生成したいもの:弾、 位置:発射ポイント取得、 回転:オブジェクトの回転を取得)
Instantiate(bulletPrefab, firePoint.position, transform.rotation);
audioSource.PlayOneShot(shotSE);
}
}
}

 

この作業で、画面外の移動はできなくなっているはずです!

 

次のページでは、画面外での敵と弾の破壊を行っていきます。

PR