¡¡À߷פÎÉôʬ¤Ç¤âÀâÌÀ¤¬¤¢¤ê¤Þ¤·¤¿¤¬¡¢¿Æ¥¯¥é¥¹¤Ë¤Ï¡¢¤¹¤Ù¤Æ¤Î¾ã³²Êª¤Ë¶¦Ä̤¹¤ë½èÍý¤ò¤Þ¤È¤á¤ÆÃÖ¤¯¤è¤¦¤Ë¤·¤Þ¤¹¡£
¿Æ¥¯¥é¥¹¤Î½èÍý
¡ãÊÑ¿ô¡ä¡¡¡¡¡¡¹¶·âÎÏ¡¢³Æ¥¯¥é¥¹¤Ø¤Î¥¢¥µ¥¤¥ó(RectTransform¥³¥ó¥Ý¡¼¥Í¥ó¥È¡¢BattleManager¥¯¥é¥¹)
¡ã¥á¥½¥Ã¥É¡ä¡¡Start¡¢SetUpObstacle¡¢OnCollisionEnter2D¡¢BeforeTriggerEffect¡¢AfterTriggerEffect
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ÊSetUpObstacle¥á¥½¥Ã¥É°Ê³°¤Ï virtual ¥¡¼¥ï¡¼¥É¤òÉÕ¤±¤Æ»Ò¥¯¥é¥¹¤Ç¥ª¡¼¥Ð¡¼¥é¥¤¥É¤Ç¤¤ë¤è¤¦¤Ë¤¹¤ë¡Ë
¡¡³Æ¥á¥½¥Ã¥É¤Î½¤¾þ»Ò¤Ï protected ¤òÍøÍѤ·¤Þ¤¹¡£¤³¤ì¤Ï¡¢¿Æ»Ò¥¯¥é¥¹´Ö¤Ç¤Î¤ß»²¾È¤ò²Äǽ¤È¤¹¤ë½¤¾þ»Ò¤Ç¤¹¡£private ¤è¤ê¤â¾¯¤·ÍøÍÑÈϰϤ¬¹¤¤¥¤¥á¡¼¥¸¤Ç¤¹¡£
¤³¤Î½¤¾þ»Ò¤ò»ý¤ÄÊÑ¿ô¤ä¥á¥½¥Ã¥É¤Ï¿Æ»Ò¤Î´Ö¤ÇÍøÍѤ¬²Äǽ¤Ë¤Ê¤ê¤Þ¤¹¡£private½¤¾þ»Ò¤ä¡¢public½¤¾þ»Ò¤Î°·¤¤¤ÏƱÍͤǤ¹¡£
¡¡¤Þ¤¿³Æ¥á¥½¥Ã¥É¤Ë¤Ï virtual¡Ê¥Ð¡¼¥Á¥ã¥ë¡Ë ¥¡¼¥ï¡¼¥É¤¬Äɲ䵤ì¤Æ¤¤¤Þ¤¹¡£¤³¤Î¥¡¼¥ï¡¼¥É¤ò»ý¤Ä¥á¥½¥Ã¥É¤Ï¡¢»Ò¥¯¥é¥¹¤ËƱ½èÍý¤òµ½Ò¤·¤¿ºÝ¤Ë¡¢½èÍý¤ÎÆâÍƤòÊѹ¹¤·¤Æ¤â¤è¤¤¤³¤È¤òɽ¤·¤Þ¤¹¡£
¤³¤Îµ¡Ç½¤Ë¤è¤Ã¤Æ¡¢¿Æ¥¯¥é¥¹¤Ç¾ã³²ÊªÁ´ÂΤﶤëÉñ¤¤¤ò·èÄꤷ¡¢»Ò¥¯¥é¥¹¤Ç³Æ¾ã³²Êª¤´¤È¤Î¤Õ¤ë¤Þ¤¤¤òÀßÄꤹ¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¡¡¤³¤Î¤è¤¦¤ËƱ¤¸¥¯¥é¥¹¤Ç¤¢¤Ã¤Æ¤â½èÍý¤ÎÆâÍÆ¡¦¿¶¤ëÉñ¤¤¤¬ÊѲ½¤¹¤ë¤³¤È¤ò¿ÂÖÀ¤È¸À¤¤¤Þ¤¹¡£
¡¡º£²ó¤Î¥¹¥¯¥ê¥×¥È¤Ç¤Ï¥³¥á¥ó¥È¤ò¾Êά¤·¤Æ¤¤¤Þ¤¹¡£¤³¤³¤Ë¡¢¼«Ê¬¤Ç¥³¥á¥ó¥È¤Ä¤±¤Æ½èÍý¤òµ½Ò¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
¤â¤·¤â¥³¥á¥ó¥È¤¬µ½Ò¤Ç¤¤Ê¤¤¤è¤¦¤Ç¤¢¤ì¤Ð¡¢¶µºà¤Î°ÊÁ°¤Î¼ê½ç¤ä¡¢Ê̤Υ¹¥¯¥ê¥×¥È¤ò¸«Ä¾¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
ObstacleBase.cs
¡¡<=¡¡¥¯¥ê¥Ã¥¯¤¹¤ë¤È³«¤¤Þ¤¹
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;
public class ObstacleBase : MonoBehaviour
{
public int power;
protected RectTransform rectTransform;
¡¡¡¡[SerializeField]
protected BattleManager battleManager;
protected virtual void Start()
{
rectTransform = GetComponent<RectTransform>();
Vector2 startSize = rectTransform.sizeDelta;
rectTransform.sizeDelta = new Vector2(0, startSize.y);
Sequence sequence = DOTween.Sequence();
sequence.Append(rectTransform.DOSizeDelta(startSize, 1.0f).SetEase(Ease.OutCirc));
sequence.Join(rectTransform.DOShakePosition(1.0f, 3, 20, 180).SetEase(Ease.Linear));
}
public virtual void SetUpObstacle(BattleManager battleManager) {
this.battleManager = battleManager;
}
protected virtual void OnCollisionEnter2D(Collision2D col)
{
if (col.gameObject.tag == "Liner")
{
return;
}
if (col.gameObject.tag == "CharaBall")
{
if (col.gameObject.TryGetComponent(out CharaBall charaBall))
{
BeforeTriggerEffect(charaBall);
Sequence sequence = DOTween.Sequence();
sequence.Append(charaBall.transform.DOLocalRotate(new Vector3(0, 0, 720), 0.5f, RotateMode.FastBeyond360).SetEase(Ease.Linear));
AfterTriggerEffect(charaBall);
}
}
}
/// <summary>
/// ÀÜ¿¨È½Äê»þ¤ËºÇ½é¤ËÄɲ乤ë½èÍý
/// </summary>
/// <param name="charaBall"></param>
protected virtual void BeforeTriggerEffect(CharaBall charaBall) {
}
/// <summary>
/// ÀÜ¿¨È½Äê»þ¤ËºÇ¸å¤ËÄɲ乤ë½èÍý
/// </summary>
/// <param name="charaBall"></param>
protected virtual void AfterTriggerEffect(CharaBall charaBall) {
}
}