こんにちは、ユニブレです!
今回Udemyのテキスト教材用に
シューティングゲームの記事を作成しました!
共同製作者は
Unityインストラクターしまづさんです
初心者の方でも真似て作れる様に、
簡潔にわかりやすく書いていきます。
Part8では
- Playerの移動制御
- 画面外で敵と弾の破壊
- 敵の左右移動
を記事にしました。
PR
環境は
MacOS Catalina:ver 10.15.4
Unity:ver2019.4.3f1
です。
Playerの移動制御
移動できる範囲を制限するにあたり、
SceneViewで機体を動かしてPositionの数値を確かめましょう!
上記数値を配慮した上で、
PlayerShipに下記コードを記述して下さい。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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