¡¡OrbitingBullet ¥¯¥é¥¹¤ò¸µ¤Ë½¤Àµ¤·¡¢BulletBase ¤ò·Ñ¾µ¤·¡¢ObjectPool ¤Îµ¡Ç½¤òÈ÷¤¨¤¿¿·¤·¤¤¥¯¥é¥¹¤òºîÀ®¤·¤Þ¤¹¡£
¡¡Á°¤Î¥¯¥é¥¹¤Ï»Ä¤·¤Æ¤ª¤¤¤Æ¡¢¤³¤Á¤é¤Î½èÍý¤ÈÈæ³Ó¤·¤Ê¤¬¤é¡¢¤É¤ÎÉôʬ¤¬¥ê¥Õ¥¡¥¯¥¿¥ê¥ó¥°¤µ¤ì¤Æ¤¤¤ë¤«¤ò³Îǧ¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£
<= ¥¯¥ê¥Ã¥¯¤¹¤ë¤È³«¤¤Þ¤¹
using UnityEngine;
public class OrbitingBullet_Pool : BulletBase¡¡¡¡//¡¡¢«¡¡BulletBase ¥¯¥é¥¹¤ò·Ñ¾µ¤·¤Þ¤¹
{
[SerializeField] private float rotateSpeed = 3; // ²óž®ÅÙ
[SerializeField] private Transform target; // ²óž¤ÎÃæ¿´¼´¤È¤Ê¤ë¥¿¡¼¥²¥Ã¥È
public Transform Target { get => target; set => target = value; } // ¥×¥í¥Ñ¥Æ¥£
private float rotationSpeedClockwise = -1.0f; // ²óž¤ÎÊý¸þ¡£-1¤Ç»þ·×²ó¤ê¡¢1¤ÇȾ»þ·×²ó¤ê¡£Â礤µ¤Ë¤è¤Ã¤Æ³ÑÅÙ¤âÊѤï¤ë
void Update()
{
if (!target)
{
return;
}
Revolve();
}
/// <summary>
/// ½é´üÀßÄê
/// </summary>
/// <param name="charaController"></param>
public override void SetUp<T>(T charaController)
{
base.SetUp(charaController);
if (charaController is CharaController chara) {
target = chara.transform;
} else {
Debug.Log("CharaController ¤¬¼èÆÀ½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿¡£");
}
}
public override void Shoot(Vector2 direction, float duration) { }
/// <summary>
/// ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òÃæ¿´¼´¤ËÂФ·¤Æ±ß±¿Æ°(¸øž)¤µ¤»¤ë
/// </summary>
private void Revolve()
{
//¥×¥ì¥¤¥ä¡¼¤òÃæ¿´¤Ë±ß±¿Æ°(¸øž²óž) RotateAround(Ãæ¿´¤È¤Ê¤ë¥ï¡¼¥ë¥ÉºÂɸ¡¢²óž¼´¡¢²óž³ÑÅÙ)
transform.RotateAround(target.transform.position, Vector3.forward, rotationSpeedClockwise * rotateSpeed * Time.deltaTime);
}
}
¡¡SetUp ¥á¥½¥Ã¥É¤È Shoot ¥á¥½¥Ã¥É¤ò override ¤·¤Æ¼ÂÁõ¤·¤Æ¤¤¤Þ¤¹¡£
Shoot ¥á¥½¥Ã¥É¤Ï¡¢¤³¤Î¥¯¥é¥¹¤Ç¤ÏÍøÍѤ·¤Þ¤»¤ó¤¬¡¢BulletBase ¤Ç¤Î Shoot ¥á¥½¥Ã¥É¤¬ abstract ¤Ë¤è¤Ã¤ÆÄêµÁ¤µ¤ì¤Æ¤¤¤ë¤¿¤á¡¢
¼Â¹Ô¤·¤¿¤¤½èÍý¤¬¤Ê¤¤¾ì¹ç¤Ç¤¢¤Ã¤Æ¤âɬ¤ºÄêµÁ¤·¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£Ãê¾Ý¥á¥½¥Ã¥É¤Ë¤è¤ëÀ©Ìó¤Ç¤¹¡£
¡¡¤³¤ÎÀ©Ìó¤Ë¤è¤ê¡¢BulletBase ¥¯¥é¥¹¤ò·Ñ¾µ¤·¤Æ¤¤¤ë¥µ¥Ö¥¯¥é¥¹¤Ë¤Ï¡¢É¬¤º Shoot ¥á¥½¥Ã¥É¤òÄêµÁ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
¤³¤Î¥¯¥é¥¹¤Ç¤ÏÍøÍѤ·¤Þ¤»¤ó¤¬¡¢Â¾¤ÎÃÆÍѤΥ¯¥é¥¹¤Ë¤â¼ÂÁõ¤Î¶¯À©¤¬À¸¤¸¤Þ¤¹¤Î¤Ç¡¢ÃƤòȯ¼Í¤¹¤ëµ¡Ç½¤ò½ñ¤¯¤³¤È¤¬Êݾڤµ¤ì¤ë¤È¤¤¤¦°ÕÌ£¹ç¤¤¤¬¤¢¤ê¤Þ¤¹¡£
¡¡¤Ê¤ª¡¢¤â¤·¤âŨ¦¤ËÀû²ó¤¹¤ëÃƤ¬¤¢¤¿¤Ã¤¿¤È¤¡¢ÃƤòÇ˲õ¤·¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢
Destroy ¤µ¤»¤Æ¤¤¤ëÉôʬ¤ò¡¢ReleaseBullet() ¥á¥½¥Ã¥É¤ò¼Â¹Ô¤¹¤ë¤è¤¦¤ËÊѹ¹¤·¤Æ¤¯¤À¤µ¤¤¡£
¡¡
¡¡Å¨¤ËÀÜ¿¨¤·¤Æ¤âÀû²ó¤¹¤ëÃƼ«ÂΤ¬Ç˲õ¤µ¤ì¤Æ¤¤¤Ê¤¤¤Î¤Ç¤¢¤ì¤ÐÌäÂꤢ¤ê¤Þ¤»¤ó¡£