示例#1
0
    IEnumerator transitToScene(SubAreaHandler subAreaHandler)
    {
        Door door = subAreaHandler.gameObject.GetComponentInChildren <Door>();

        player.stateMachine.SwitchState(player.cinemaState);

        if (door != null)
        {
            // Open Door
            Animator doorAnim = door.GetComponent <Animator>();
            door.Open();
            yield return(new WaitForEndOfFrame());

            yield return(new WaitForSeconds(doorAnim.GetCurrentAnimatorStateInfo(0).length));
        }
        // Play Transition UI Effect
        // float time = gm.uiHandler.uiEffectHandler.OnPlayUIEffect(subAreaHandler.uIEffect, UIEffectAnimationClip.start);
        yield return(new WaitForSeconds(gm.uiHandler.uiEffectHandler.OnPlayUIEffect(subAreaHandler.uIEffect, UIEffectAnimationClip.start)));

        // TODO:
        /* startEffect */
        /* endEffect */

        // Enable and Disable scenes
        // move player to new position
        yield return(new WaitForSeconds(UIEffectData.CROSS_FADE_DELAY / 2));

        door?.Close();
        yield return(new WaitForEndOfFrame());

        gm.LoadSceneCode(subAreaHandler.transitionSceneCode);

        player.SetVelocityY(0);

        if (subAreaHandler.targetSceneInitPos != null)
        {
            player.transform.position = subAreaHandler.targetSceneInitPos.position;
        }
        Camera.main.GetComponent <BasicFollower>().ClampCamera(player.transform.position);

        player.ResetGrounded();

        yield return(new WaitForSeconds(UIEffectData.CROSS_FADE_DELAY / 2));

        //yield return new WaitForSeconds(UIEffectData.CROSS_FADE_DELAY);

        yield return(new WaitForSeconds(gm.uiHandler.uiEffectHandler.OnPlayUIEffect(subAreaHandler.uIEffect, UIEffectAnimationClip.end)));

        // set sub area handler to null

        player.SetSubAreaHandler(null);

        player.stateMachine.SwitchState(player.idleState);
    }
示例#2
0
 public void OnPerformAreaTransmission(SubAreaHandler subAreaHandler)
 {
     performAreaTransmissionHandler?.Invoke(subAreaHandler);
 }
示例#3
0
 void Awake()
 {
     subAreaHandler = transform.parent.GetComponent <SubAreaHandler>();
     InfoSignAnim   = transform.parent.GetComponentInChildren <Animator>();
 }
示例#4
0
 public void TransitToScene(SubAreaHandler subAreaHandler) => StartCoroutine(transitToScene(subAreaHandler));
示例#5
0
 public void SetSubAreaHandler(SubAreaHandler subAreaHandler) => this.subAreaHandler = subAreaHandler;