¡¡¥×¥ì¥¤¥ä¡¼¤¬ÆÃÄê¤Î°ÌÃ֤˿¯Æþ¤·¤¿ºÝ¤Ë Timeline ¤òºÆÀ¸¤·¡¢¥«¥Ã¥È¥·¡¼¥ó¤ò¼Â¹Ô¤¹¤ë¥¹¥¯¥ê¥×¥È¤Ç¤¹¡£
Àè¤Û¤ÉºîÀ®¤·¤¿ TriggerCutscene ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¥¢¥¿¥Ã¥Á¤·¤ÆÍøÍѤ·¤Þ¤¹¡£
¡¡
Timeline ¤ËÂФ·¤Æ¤ÎÌ¿Îá¤Ï PlayableDirector ¥¯¥é¥¹¤òÍøÍѤ·¤Þ¤¹¡£
UnityEngine.Playables ̾Á°¶õ´Ö¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ë¥¯¥é¥¹¤Ç¤¹¤Î¤Ç¡¢
using UnityEngine.Playables; ¤òÄɲ䷤Ƥ¯¤À¤µ¤¤¡£
¡¡¿¯ÆþȽÄêÍѤΠOnTriggerEnter ¥á¥½¥Ã¥É¤Ç¤Ï¡¢¥¿¥°¤Ë¤è¤ëȽÄê¤È¥¯¥é¥¹¤Ë¤è¤ëȽÄê¤Î£²¤Ä¤Î½èÍý¤òÍÑ°Õ¤·¤Æ¤¢¤ê¤Þ¤¹¡£
¤¤¤º¤ì¤«°ìÊý¤òºÎÍѤ·¤Æ¤¯¤À¤µ¤¤¡£
¡¡¤¿¤À¤·¡¢¥¿¥°¤è¤ê¤â
¥¯¥é¥¹¤Ë¤è¤ëȽÄê¤ÎÊý¤¬¥á¥ê¥Ã¥È¤¬Â礤¤¤Î¤Ç¡¢½ÐÍè¤ì¤Ð¤½¤Á¤é¤òÍøÍѤ·¤Þ¤·¤ç¤¦¡£
Î㤨¤Ð¡¢PlayerController ¤ÇȽÄꤷ¤¿¤¤¾ì¹ç¤Ë¤Ï¡¢ if (other.TryGetComponent(out PlayerController player)) { ¤Î¤è¤¦¤Ë½ñ¤´¹¤¨¤ÆÍøÍѤ·¤Æ¤¯¤À¤µ¤¤¡£
¡¡Timeline ¤¬ºÆÀ¸¤ò½ªÎ»¤·¤¿¤³¤È¤â³Îǧ½ÐÍè¤ë¤è¤¦¤Ë¤·¤Æ¤¢¤ê¤Þ¤¹¡£
¿¤¯¤Î¾ì¹ç¡¢¥«¥Ã¥È¥·¡¼¥óºÆÀ¸Ãæ¤Ç¤Ï¥×¥ì¥¤¥ä¡¼¤ÎÁàºî¤Ï½ÐÍè¤Ê¤¤¾õÂ֤ˤʤë¤È»×¤¤¤Þ¤¹¤Î¤Ç¡¢TODO ¤òÍÑ°Õ¤·¤Æ¤¢¤ê¤Þ¤¹¡£
¡¡¤½¤ì¤é¤ÎÀ©¸æ½èÍý¤Ë¤Ä¤¤¤Æ¤Ï¡¢¼«Ê¬¤Î¥×¥í¥¸¥§¥¯¥È¤Ë¹ç¤ï¤»¤Æ TODO Éôʬ¤Ë¼ÂÁõ¤·¤Æ¤¤¤¯¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£
using System.Collections;
using UnityEngine;
using UnityEngine.Playables;¡¡¡¡//¡¡Äɲ䷤Ƥ¯¤À¤µ¤¤¡£
public class TriggerCutscene : MonoBehaviour
{
[SerializeField] private PlayableDirector playableDirector;
private string target = "Player"; // MainCamera ¤Ê¤É¡¢¼«Ê¬¤Î¥×¥í¥¸¥§¥¯¥È¤Ë¹ç¤ï¤»¤ÆŬµ¹Êѹ¹¤·¤Æ¤¯¤À¤µ¤¤¡£
void OnTriggerEnter(Collider other) {
if (other.CompareTag(target))
{
Debug.Log("¥«¥Ã¥È¥·¡¼¥ó ³«»Ï");
// TODO ¥«¥Ã¥È¥·¡¼¥ó¤¬»Ï¤Þ¤Ã¤¿¤È¤¤Î½èÍý¡£¥×¥ì¥¤¥ä¡¼¤Î°ÜÆ°À©¸æ¡¢¹ÔÆ°À©¸æ¤Ê¤É
// ¥«¥Ã¥È¥·¡¼¥óºÆÀ¸
StartCoroutine(PlayCutscene());
}
if (other.TryGetComponent(out [ȽÄꤷ¤¿¤¤¥¯¥é¥¹¤ÈÊÑ¿ô])) {
Debug.Log("¥«¥Ã¥È¥·¡¼¥ó ³«»Ï");
// TODO ¥«¥Ã¥È¥·¡¼¥ó¤¬»Ï¤Þ¤Ã¤¿¤È¤¤Î½èÍý¡£¥×¥ì¥¤¥ä¡¼¤Î°ÜÆ°À©¸æ¡¢¹ÔÆ°À©¸æ¤Ê¤É
// ¥«¥Ã¥È¥·¡¼¥óºÆÀ¸
StartCoroutine(PlayCutscene());
}
}
/// <summary>
/// ¥«¥Ã¥È¥·¡¼¥óºÆÀ¸
/// </summary>
/// <returns></returns>
private IEnumerator PlayCutscene() {
playableDirector.Play();
// ¥«¥Ã¥È¥·¡¼¥ó¤¬½ªÎ»¤¹¤ë¤Þ¤ÇÂÔµ¡¡
// while (playableDirector.state == PlayState.Playing) {
// yield return null;
// }
// ¥«¥Ã¥È¥·¡¼¥ó¤¬½ªÎ»¤¹¤ë¤Þ¤ÇÂÔµ¡¢
yield return new WaitUntil(() => playableDirector.state != PlayState.Playing);
Debug.Log("¥«¥Ã¥È¥·¡¼¥ó ½ªÎ»");
// TODO ¥«¥Ã¥È¥·¡¼¥ó¸å¤Î½èÍý¡£¥×¥ì¥¤¥ä¡¼¤ÎÁàºî¤ò¼õ¤±ÉÕ¤±¤ë¾õÂÖ¤ËÌ᤹¡¢¤Ê¤É
}
}
¡¡¡¤È¢¤ÎÃæÃǽèÍý¤Ï¤É¤Á¤é¤òºÎÍѤ·¤Æ¤âÌäÂꤢ¤ê¤Þ¤»¤ó¡£(¤¤¤º¤ì¤«¤òºÎÍѤ·¤Æ¤¯¤À¤µ¤¤¡£)