Unityでジャンクゲームを作っているっぽい

会社帰りにGPD PocketにUnity入れてゲーム作ってます

【2DのTest】13_弾丸をオート連射

弾を撃つ方向をヴァルケン方式かメタスラ欲しきにするかで迷う
前者は実装が複雑なんだよな…

方針

  1. メタスラ方式で進める
  2. しゃがみは無いので、8方向に攻撃できる
  3. ホールドボタンは用意する
  4. 攻撃ボタンおしっぱでホールドでもいい
  5. 空のオブジェクトから弾を撃
  6. 空のオブジェクトは自機を中心に移動させる
  7. 後から斜め上攻撃、真上攻撃のmotionを作って銃口の位置に合わせるイメージ

空のオブジェクトを用意

回転中心用の空のオブジェクト Shot_RollPoint
f:id:mekatamatama:20210328205957p:plain
弾発射場所用の空のオブジェクト Shot_ShotPoint
f:id:mekatamatama:20210328210241p:plain
を用意する
回転用のスクリプトはShot_RollPointに設定
弾丸の発射場所はShot_ShotPointに設定していきたい

自動で弾丸を撃てるようにしたい

player_shot.csを新規作成

以前作った別のゲームからコピペですけど
古典的な自動連射のコード

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class player_shot : MonoBehaviour{
	public GameObject bulletObject = null;		//弾のプレハブ
	public Transform bulletStartPosition = null;//弾の発射位置
	private float timeElapsed = 0.0f;			//弾の連射間隔カウント用
	public float timeOut;						//連射間隔の時間

	void Update(){
		Shot();
	}

	void Shot(){
		timeOut = 0.4f;					//連射間隔設定
		timeElapsed += Time.deltaTime;	//カウント
		if(timeElapsed >= timeOut){
			//弾の生成位置を指定
			Vector3 vecBulletPos = bulletStartPosition.position;
			//弾を生成
			Instantiate(
						bulletObject,
						vecBulletPos,
						transform.rotation
						);
			timeElapsed = 0.0f;			//初期化
		}
	}
}

Shot_ShotPointにスクリプトをアタッチ

弾丸プレハブ
弾丸の発射場所
弾丸発射間隔時間
を設定
f:id:mekatamatama:20210328211433p:plain

攻撃できた!!

イイ感じ
f:id:mekatamatama:20210328211536g:plain:h300
次は攻撃の方向を制御したいね

今回のスクリプトは以下
github.com