¡¡Àë¸À¥Õ¥£¡¼¥ë¥É¤Ë¤Ï¿·¤·¤¯£´¤Ä¤ÎÊÑ¿ô¤òÄɲ䷤Ƥ¤¤Þ¤¹¡£½èÍý¤ÎÆâÍƤò³Îǧ¤·¡¢¤É¤ÎÉôʬ¤ÇÍøÍѤ·¤Æ¤¤¤ë¤Î¤«¤òÆɤ߲ò¤¤¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
¡¡isMoveing ÊÑ¿ô¤¬°ÜÆ°¤ò¹Ô¤¦²ÖÎؤˤ¹¤ë¤Î¤«¤òÀßÄꤹ¤ëÉôʬ¤Ë¤Ê¤ê¤Þ¤¹¡£¤³¤Á¤é¤Î¥Á¥§¥Ã¥¯¤¬¥ª¥ó(true)¤Î¾ì¹ç¤Ë¤Ï¡¢Start ¥á¥½¥Ã¥ÉÆâ¤ËÄɲ乤ë½èÍý¤Ë¤è¤Ã¤Æ
²ÖÎؤ¬°ÜÆ°¤ò¹Ô¤¦¤è¤¦¤ËÀ©¸æ¤·¤Æ¤¤¤Þ¤¹¡£¥¹¥¤¥Ã¥Á¤¬¥ª¥Õ(false)¤Î¾ì¹ç¤Ë¤Ï¡¢°ÜÆ°¤ò¹Ô¤ï¤Ê¤¤²ÖÎؤˤʤê¤Þ¤¹¡£¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤ÇÀßÄê¤Ç¤¤ë¤è¤¦¤Ë¤·¤Æ¤ª¤¯¤³¤È¤Ç
ÀßÃÖ¤·¤¿²ÖÎؤ´¤È¤Ë¡¢
°ÜÆ°¤¹¤ë¤Î¤«¡¢¤·¤Ê¤¤¤Î¤«¤ò¤½¤ì¤¾¤ì¸ÄÊ̤ËÀßÄê¤Ç¤¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡£
¡¡³Æ¥á¥½¥Ã¥ÉÆâ¤Ë¤â½èÍý¤òÄɲ䷤Ƥ¤¤Þ¤¹¡£
¡¡Start ¥á¥½¥Ã¥É¤Ë¤Ï¡¢°ÜÆ°¤¹¤ëÀßÄê¤Ë¤Ê¤Ã¤Æ¤¤¤ë¾ì¹ç¤Î¤È¤¤Î¤ß°ÜÆ°¤òÀ©¸æ¤¹¤ëÌ¿Îá¤òÄɲ䷤Ƥ¤¤Þ¤¹¡£
¡¡OnTriggerEnter ¥á¥½¥Ã¥É¤Ë¤Ï¡¢¤³¤Î¥á¥½¥Ã¥É¤¬È½Äê¤ò¹Ô¤¦ÂоݤȤ·¤Æ¡¢
¿åÌ̤Υ³¥é¥¤¥À¡¼¤Ë¤Ä¤¤¤Æ¤ÏȽÄꤷ¤Ê¤¤¤è¤¦¤Ë½èÍý¤òÄɲ䷤Ƥ¤¤Þ¤¹¡£
¸½ºß¤Ï¿¯ÆþȽÄê¤ËÂФ·¤ÆÀ©¸Â¤¬¤Ê¤¤¤¿¤á¡¢¤¤¤º¤ì¤«¤Î¥³¥é¥¤¥À¡¼¤¬¿¯Æþ¤·¤¿»þÅÀ¤ÇȽÄ꤬ȯÀ¸¤¹¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
¤½¤Î¤¿¤á¡¢¿åÌ̤ËÀßÃÖ¤·¤Æ¥²¡¼¥à¤ò¼Â¹Ô¤¹¤ë¤È¤½¤Î½Ö´Ö¤Ë OnTriggerEnter ¥á¥½¥Ã¥É¤¬¸Æ¤Ó½Ð¤µ¤ì¤Æ²ÖÎؤ¬¾Ã¤¨¤Æ¤·¤Þ¤¤¤Þ¤¹¡£
¤³¤ì¤ò²óÈò¤¹¤ë¤¿¤á¤Ë¡¢¤³¤Î¤è¤¦¤ÊÀ©¸æ½èÍý¤òÄɲ䷤Ƥ¤¤Þ¤¹¡£
PlayGetEffect ¥á¥½¥Ã¥É¤Ë¤ÏSEºÆÀ¸½èÍý¤òÄɲ䷤Ƥ¤¤Þ¤¹¡££²¤«½êÄɲ䷤Ƥ¤¤Þ¤¹¤¬¡¢ºÇ½é¤Ë¹Í¤¨¤Æ¤¤¤ëÉôʬ¤Ë½èÍý¤òÄɲ䷤Ƥ¯¤À¤µ¤¤¡£
¥ª¡¼¥Ç¥£¥ª¥Õ¥¡¥¤¥ë¤ò£²¼ïÎàÍÑ°Õ¤·¤Æ¤ª¤ê¡¢Î¾Êý¤Ë½èÍý¤òÄɲ乤ë¤Ë¤Ï¡¢É¬ÍפÊÊÑ¿ô¤âÄɲ䷤Ƥ¯¤À¤µ¤¤¡£
FlowerCircle.cs
¡¡<=¡¡¥¯¥ê¥Ã¥¯¤¹¤ë¤È³«¤¤Þ¤¹
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;
public class FlowerCircle : MonoBehaviour
{
[Header("²ÖÎØÄ̲á»þ¤ÎÆÀÅÀ")]
public int point;
[SerializeField]
private BoxCollider boxCollider;
[SerializeField]
private GameObject effectPrefab;
////* ¤³¤³¤«¤éÄɲà *////
[SerializeField]
private AudioClip flowerSE;¡¡¡¡// Ä̲á»þ¤È³ÍÆÀ»þ¤Ç£²²óÊÌ¡¹¤ÎSE¤òÌĤ餷¤¿¤¤¾ì¹ç¤Ë¤ÏÊÑ¿ô¤ò£²¤ÄÍÑ°Õ¤¹¤ë
[SerializeField, Header("°ÜÆ°¤µ¤»¤ë¾ì¹ç¥¹¥¤¥Ã¥ÁÆþ¤ì¤ë")]
private bool isMoveing;
[SerializeField, Header("°ÜÆ°»þ´Ö")]
private float duration;
[SerializeField, Header("°ÜÆ°µ÷Î¥")]
private float moveDistance;
////* ¤³¤³¤Þ¤Ç *////
void Start() {
// ¥¢¥¿¥Ã¥Á¤·¤¿¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È(²ÖÎØ)¤ò²óž¤µ¤»¤ë
transform.DORotate(new Vector3(0, 360, 0), 5.0f, RotateMode.FastBeyond360).SetEase(Ease.Linear).SetLoops(-1, LoopType.Restart);
////* ¤³¤³¤«¤éÄɲà *////
¡¡¡¡¡¡¡¡// ¤³¤Î²ÖÎؤ¬°ÜÆ°¤¹¤ë²ÖÎؤÎÀßÄê¤Ê¤é
if (isMoveing) {
¡¡¡¡¡¡¡¡¡¡¡¡// Á°¸å¤Ë¥ë¡¼¥×°ÜÆ°¤µ¤»¤ë
transform.DOMoveZ(transform.position.z + moveDistance, duration).SetEase(Ease.Linear).SetLoops(-1, LoopType.Yoyo);
}
////* ¤³¤³¤Þ¤Ç *////
}
// ²ÖÎؤ«¤é¤ß¤Æ¡¢Â¾¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤¬²ÖÎؤ˿¯Æþ¤·¤¿¾ì¹ç
private void OnTriggerEnter(Collider other) {
////* ¤³¤³¤«¤éÄɲà *////
// ¿åÌ̤˿¨¤ì¤Æ¤âÄ̲áȽÄê¤Ï¹Ô¤ï¤Ê¤¤
if (other.gameObject.tag == "Water") {
return;
}
////* ¤³¤³¤Þ¤Ç *////
// ²ÖÎؤΠBoxCollider ¤Î¥¹¥¤¥Ã¥Á¤ò¥ª¥Õ¤Ë¤·¤Æ½ÅʣȽÄê¤òËÉ»ß
boxCollider.enabled = false;
// ²ÖÎؤò¥¥ã¥é¤Î»Ò¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤¹¤ë
transform.SetParent(other.transform);
// ²ÖÎؤò¤¯¤°¤Ã¤¿ºÝ¤Î±é½Ð
StartCoroutine(PlayGetEffect());
}
/// <summary>
/// ²ÖÎؤò¤¯¤°¤Ã¤¿ºÝ¤Î±é½Ð
/// </summary>
private IEnumerator PlayGetEffect() {
////* ¤³¤³¤«¤éÄɲà *////
// ¡SEºÆÀ¸
AudioSource.PlayClipAtPoint(flowerSE, transform.position);
////* ¤³¤³¤Þ¤Ç *////
// DOTween ¤Î Sequence ¤òÀë¸À¤·¤ÆÍøÍѤǤ¤ë¤è¤¦¤Ë¤¹¤ë
Sequence sequence = DOTween.Sequence();
// Append ¤ò¼Â¹Ô¤¹¤ë¤È¡¢°ú¿ô¤ÇDOTween¤Î½èÍý¤ò¼Â¹Ô¤Ç¤¤ë¡£²ÖÎؤΠScale ¤ò 1É䫤±¤Æ 0 ¤Ë¤·¤Æ¸«¤¨¤Ê¤¯¤¹¤ë
sequence.Append(transform.DOScale(Vector3.zero, 1.0f));
¡¡¡¡¡¡¡¡// Join ¤ò¼Â¹Ô¤¹¤ë¤³¤È¤Ç¡¢Append ¤È°ì½ï¤ËDOTween¤Î½èÍý¤ò¹Ô¤¨¤ë¡£²ÖÎؤΠScale ¤¬1É䫤±¤Æ 0 ¤Ë¤Ê¤ë¤Î¤È°ì½ï¤Ë¡¢¥×¥ì¥¤¥ä¡¼¤Î°ÌÃ֤˲ÖÎؤò°ÜÆ°¤µ¤»¤ë
sequence.Join(transform.DOLocalMove(Vector3.zero, 1.0f));
¡¡¡¡¡¡¡¡// 1ÉýèÍý¤òÃæÃÇ(ÂÔµ¡¤¹¤ë)
¡¡¡¡¡¡¡¡yield return new WaitForSeconds(1.0f);
// ¥¨¥Õ¥§¥¯¥È¤òÀ¸À®¤·¤Æ¡¢Instantiate ¥á¥½¥Ã¥É¤ÎÌá¤êÃͤò effect ÊÑ¿ô¤ËÂåÆþ
GameObject effect = Instantiate(effectPrefab, transform.position, Quaternion.identity);
¡¡¡¡¡¡¡¡// ¥¨¥Õ¥§¥¯¥È¤Î°ÌÃÖ(¹â¤µ)¤òÄ´À°¤¹¤ë¡¡<=¡¡¡ù¡¡¤³¤Î¹â¤µ¤ÎÄ´À°¤¬É¬ÍפÊÍýͳ¤Ï¤Ê¤ó¤À¤È»×¤¤¤Þ¤¹¤«¡©¡¡°ìÅÙ¡¢¤³¤Î½èÍý¤ò¥³¥á¥ó¥È¥¢¥¦¥È¤·¤Æ¡¢¤É¤Î¤è¤¦¤Ê°ã¤¤¤¬½Ð¤ë¤«³Îǧ¤·¤Æ¤¯¤À¤µ¤¤¡£
effect.transform.position = new Vector3(effect.transform.position.x, effect.transform.position.y -1.5f, effect.transform.position.z);
¡¡¡¡¡¡¡¡// 1Éøå¤Ë¥¨¥Õ¥§¥¯¥È¤òÇË´þ(¤¹¤°¤ËÇË´þ¤¹¤ë¤È¥¨¥Õ¥§¥¯¥È¤¬¤¹¤Ù¤ÆºÆÀ¸¤µ¤ì¤Ê¤¤¤¿¤á)
Destroy(effect, 1.0f);
////* ¤³¤³¤«¤éÄɲà *////
// ¢SEºÆÀ¸
AudioSource.PlayClipAtPoint(flowerSE, transform.position);
////* ¤³¤³¤Þ¤Ç *////
// ²ÖÎؤò1Éøå¤ËÇË´þ
Destroy(gameObject, 1.0f);
}
}
¡¡¥¹¥¯¥ê¥×¥È¤Î½¤Àµ¤¬½ªÎ»¤·¤¿¤é¡¢¥Ò¥¨¥é¥ë¥¡¼¤Ë¤¢¤ë FlowerCircle ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤ò³Îǧ¤·¤Þ¤¹¡£
¿·¤·¤¯Äɲä·¤¿ effectPrefab ÊÑ¿ô¤¬Äɲ䵤ì¤Æ¤¤¤ë¤«³Îǧ¤·¤Æ¤¯¤À¤µ¤¤¡£
FlowerCircle ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¡¡¥¤¥ó¥¹¥Ú¥¯¥¿¡¼²èÁü