ミサイルの発射②(連射モードの作成)

攻撃モードの追加
using UnityEngine;
public class AttackController : MonoBehaviour
{
public GameObject missilePrefab;
public GameObject firePoint;
public AudioClip sound;
// ★追加
private float timer;
private float interval = 0.1f;
private enum AttackState
{
Normal,
RapidFire
}
private AttackState aState;
// ★追加
void Start()
{
aState = AttackState.RapidFire;
}
void Update()
{
// ★追加
if (aState == AttackState.Normal)
{
NormalShoot();
}
else if (aState == AttackState.RapidFire)
{
RapidShoot();
}
}
// ノーマルモード
void NormalShoot()
{
if (InputManager.isa.Player.Shot.triggered)
{
AudioSource.PlayClipAtPoint(sound, Camera.main.transform.position);
GameObject missile = Instantiate(missilePrefab, firePoint.transform.position, Quaternion.identity);
Destroy(missile, 5.0f);
}
}
// ★追加
// 連射モード
void RapidShoot()
{
if (InputManager.isa.Player.Shot.IsPressed())
{
timer += Time.deltaTime;
if (timer > interval)
{
AudioSource.PlayClipAtPoint(sound, Camera.main.transform.position);
GameObject missile = Instantiate(missilePrefab, firePoint.transform.position, Quaternion.identity);
Destroy(missile, 5.0f);
timer = 0;
}
}
}
}


連射モードに変更
using UnityEngine;
public class AttackController : MonoBehaviour
{
public GameObject missilePrefab;
public GameObject firePoint;
private float timer;
private float interval = 0.1f;
public AudioClip sound;
private enum AttackState
{
Normal,
RapidFire
}
private AttackState aState;
void Start()
{
// (ポイント)Stateを変更することでノーマモードと連射モードを切り替える
// ★変更
aState = AttackState.RapidFire;
}
void Update()
{
if (aState == AttackState.Normal)
{
NormalShoot();
}
else if (aState == AttackState.RapidFire)
{
RapidShoot();
}
}
// ノーマルモード
void NormalShoot()
{
if (InputManager.isa.Player.Shot.triggered)
{
AudioSource.PlayClipAtPoint(sound, Camera.main.transform.position);
GameObject missile = Instantiate(missilePrefab, firePoint.transform.position, Quaternion.identity);
Destroy(missile, 5.0f);
}
}
// 連射モード
void RapidShoot()
{
if (InputManager.isa.Player.Shot.IsPressed())
{
timer += Time.deltaTime;
if (timer > interval)
{
AudioSource.PlayClipAtPoint(sound, Camera.main.transform.position);
GameObject missile = Instantiate(missilePrefab, firePoint.transform.position, Quaternion.identity);
Destroy(missile, 5.0f);
timer = 0;
}
}
}
}
【Unity6版】Danmaku(全20回)
他のコースを見る
攻撃モードの追加
using UnityEngine;
public class AttackController : MonoBehaviour
{
public GameObject missilePrefab;
public GameObject firePoint;
public AudioClip sound;
// ★追加
private float timer;
private float interval = 0.1f;
private enum AttackState
{
Normal,
RapidFire
}
private AttackState aState;
// ★追加
void Start()
{
aState = AttackState.RapidFire;
}
void Update()
{
// ★追加
if (aState == AttackState.Normal)
{
NormalShoot();
}
else if (aState == AttackState.RapidFire)
{
RapidShoot();
}
}
// ノーマルモード
void NormalShoot()
{
if (InputManager.isa.Player.Shot.triggered)
{
AudioSource.PlayClipAtPoint(sound, Camera.main.transform.position);
GameObject missile = Instantiate(missilePrefab, firePoint.transform.position, Quaternion.identity);
Destroy(missile, 5.0f);
}
}
// ★追加
// 連射モード
void RapidShoot()
{
if (InputManager.isa.Player.Shot.IsPressed())
{
timer += Time.deltaTime;
if (timer > interval)
{
AudioSource.PlayClipAtPoint(sound, Camera.main.transform.position);
GameObject missile = Instantiate(missilePrefab, firePoint.transform.position, Quaternion.identity);
Destroy(missile, 5.0f);
timer = 0;
}
}
}
}


連射モードに変更
using UnityEngine;
public class AttackController : MonoBehaviour
{
public GameObject missilePrefab;
public GameObject firePoint;
private float timer;
private float interval = 0.1f;
public AudioClip sound;
private enum AttackState
{
Normal,
RapidFire
}
private AttackState aState;
void Start()
{
// (ポイント)Stateを変更することでノーマモードと連射モードを切り替える
// ★変更
aState = AttackState.RapidFire;
}
void Update()
{
if (aState == AttackState.Normal)
{
NormalShoot();
}
else if (aState == AttackState.RapidFire)
{
RapidShoot();
}
}
// ノーマルモード
void NormalShoot()
{
if (InputManager.isa.Player.Shot.triggered)
{
AudioSource.PlayClipAtPoint(sound, Camera.main.transform.position);
GameObject missile = Instantiate(missilePrefab, firePoint.transform.position, Quaternion.identity);
Destroy(missile, 5.0f);
}
}
// 連射モード
void RapidShoot()
{
if (InputManager.isa.Player.Shot.IsPressed())
{
timer += Time.deltaTime;
if (timer > interval)
{
AudioSource.PlayClipAtPoint(sound, Camera.main.transform.position);
GameObject missile = Instantiate(missilePrefab, firePoint.transform.position, Quaternion.identity);
Destroy(missile, 5.0f);
timer = 0;
}
}
}
}
ミサイルの発射②(連射モードの作成)