¡¡¤³¤Á¤é¤â¼«Ê¬¤Î¥×¥í¥¸¥§¥¯¥È¤Ë¹ç¤ï¤»¤ÆÄɲ䷤Ƥ¯¤À¤µ¤¤¡£
¡¡Àè¤Û¤ÉºîÀ®¤·¤¿ BulletGenerattor Æâ¤Ë¤¢¤ë PrepareGenerateBullet(Vector2 direction, int numBullets) ¥á¥½¥Ã¥É¤ò¼Â¹Ô¤¹¤ë¤³¤È¤Ç
¥×¥ì¥¤¥ä¡¼¤Î¸þ¤¤¤Æ¤¤¤ëÊý¸þ¤ËÃƤòȯ¼Í½ÐÍè¤Þ¤¹¡£
¡¡¥á¥½¥Ã¥É¤Î°ú¿ô¤Ë¤Ï (¥×¥ì¥¤¥ä¡¼¤Î¸þ¤¤¤Æ¤¤¤ëÊý¸þ¡¢À¸À®¤¹¤ëÃƤοô) ¤ò¤½¤ì¤¾¤ì»ØÄꤷ¤Æ¤¯¤À¤µ¤¤¡£
¡¡¤³¤³¤Ç¤Ï»²¹ÍÍÑ¤Ë CharaAttack ¥¯¥é¥¹¤Î½¤Àµ¤òÄ󼨤·¤Þ¤¹¡£
¥¯¥é¥¹¤ÎÀ߷׾塢¥×¥ì¥¤¥ä¡¼¤Î¸þ¤¤¤Æ¤¤¤ëÊý¸þ¤Ï CharaController ¥¯¥é¥¹¤Ç´ÉÍý¤·¤Æ¤¤¤ë¤Î¤Ç¡¢¤½¤Î¾ðÊó¤òÍøÍѤ·¤Þ¤¹¡£
À¸À®¤¹¤ëÃƤοô¤Ë¤Ä¤¤¤Æ¤Ï¥Ç¥Ð¥Ã¥°ÍѤËÊÑ¿ô¤òºîÀ®¤·¡¢¤½¤Á¤é¤Ç³Îǧ¤ò¹Ô¤¤¤Þ¤¹¡£
¼ÂºÝ¤Ë¤Ï¡¢¼«Ê¬¤Î¥×¥í¥¸¥§¥¯¥È¤ÎÆâÍƤ˱þ¤¸¤Æ¡¢Î㤨¤Ð¡¢¥×¥ì¥¤¥ä¡¼¤Î¥ì¥Ù¥ë¡¢Éð´ï¤Î¥ì¥Ù¥ë¤È¤¤¤Ã¤¿¤â¤Î¤«¤é»»½Ð¤·¤Æ¤Ä¤«¤¦¤è¤¦¤Ë¤¹¤ë¤È¤¤¤¤¤Ç¤·¤ç¤¦¡£
<= ¥¯¥ê¥Ã¥¯¤·¤¿¤é³«¤¤Þ¤¹¡£
using System.Collections;
using UnityEngine;
/// <summary>
/// ¥¥ã¥é¤Î¹¶·âÍÑ¥¯¥é¥¹
/// </summary>
public class CharaAttack : MonoBehaviour, IChara
{
[SerializeField] private float attackInterval;
private BulletGenerator bulletGenerator;
private bool isAttack;
private Vector2 attackDirection;
// CharaManager ¤«¤éºÇ¿·¤Î¥×¥ì¥¤¥ä¡¼¤ÎÊý¸þ¤Î¾ðÊó¤ò»²¾È¤¹¤ë¤¿¤á¤Î¥×¥í¥Ñ¥Æ¥£
public Vector2 AttackDirection { set => attackDirection = value; }
////*¡¡¿·¤·¤¤ÊÑ¿ô¤ÎÄɲá¡*////
[SerializeField] private int debugNumBullets = 1;
////*¡¡¤³¤³¤Þ¤Ç¡¡*////
/// <summary>
/// ¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Ç¶¯À©Åª¤Ë¼ÂÁõ¤µ¤ì¤ë¥á¥½¥Ã¥É
/// </summary>
public void SetUpChara() {
TryGetComponent(out bulletGenerator);
Debug.Log("CharaAttack ÀßÄ괰λ");
}
/// <summary>
/// È¿Éü¹¶·â¤Î½àÈ÷
/// </summary>
public void PrepareAttackRepeatedly() {
isAttack = true;
StartCoroutine(AttackRepeatedlyCoroutine());
Debug.Log("¹¶·â½àÈ÷³«»Ï");
}
/// <summary>
/// È¿Éü¹¶·â
/// </summary>
/// <returns></returns>
private IEnumerator AttackRepeatedlyCoroutine()
{
while (true)
{
// while ¤ÎÆâÉô¤Ë bool ¤Ê¤É¤Îʬ´ô¤òºî¤ë¤È¡¢¹¶·â¤Î°ì»þÄä»ß¤äºÆ³«¤ËÂбþ¤Ç¤¤ë
if (!isAttack) {
yield return null;
continue;
}
yield return new WaitForSeconds(attackInterval);
Attack();
}
}
/// <summary>
/// ¹¶·â¤Î¼Â½èÍý
/// </summary>
private void Attack() {
////*¡¡¥á¥½¥Ã¥É¤Ë°ú¿ô¤òÄɲá¡*////
bulletGenerator.PrepareGenerateBullet(attackDirection, debugNumBullets);
////*¡¡¤³¤³¤Þ¤Ç¡¡*////
Debug.Log("¹¶·â");
}
/// <summary>
/// È¿Éü¹¶·â¤Î°ì»þÄä»ß
/// </summary>
public void PauseAttack() {
isAttack = false;
}
/// <summary>
/// È¿Éü¹¶·â¤ÎºÆ³«
/// </summary>
public void ResumeAttack() {
isAttack = true;
}
/// <summary>
/// ¹¶·â¤Î¥ª¥ó¥ª¥Õ(°ì»þÄä»ß¡¦ºÆ³«)¤ÎÀÚ¤êÂؤ¨
/// </summary>
public void ToggleAttack() {
isAttack = !isAttack;
Debug.Log(isAttack ? "¹¶·âºÆ³«" : "¹¶·âÄä»ß");
}
}