コード例 #1
0
    // 문 이동시 시행될 전체 업데이트. 구형모델. TotalMove로 개선
    private IEnumerator DoorMoveTeleport()
    {
        //Animator animator = TeleportCharacter.GetComponent<Animator>();

        // 캐릭터 애니메이터 걷기 세팅
        characterAnimator.SetBool("IsWalk", true);
        Vector2 desCoord;

        desCoord.x = this.transform.position.x;
        desCoord.y = TeleportCharacter.transform.position.y;

        // 캐릭터 방향 설정
        Vector3 dirVec;

        if (TeleportCharacter.transform.position.x < this.transform.position.x)
        {
            dirVec = new Vector3(-1, 1, 1);
        }
        else
        {
            dirVec = new Vector3(1, 1, 1);
        }

        while (true)
        {
            // 캐릭터 좌표 이동. 1.0f의 속도로
            TeleportCharacter.transform.position = Vector2.MoveTowards(TeleportCharacter.transform.position, desCoord, 0.7f * Time.deltaTime);

            // 캐릭터 방향은 설정된 방향벡터로
            TeleportCharacter.transform.localScale = dirVec;



            // 도착시
            if (TeleportCharacter.transform.position.x == this.transform.position.x)
            {
                // 애니메이터 뒷모습으로 전환
                characterAnimator.SetBool("IsWalk", false);
                characterAnimator.SetBool("IsBack", true);

                // 1.5초 뒤 이동, 이동타입 회복, 뷰포트전환
                yield return(new WaitForSeconds(1.5f));

                Teleport();
                characterMover.moveType = CharacterMover.MoveType.COMMANDMOVE;
                cameraSystem.changeViewport();

                // 애니메이터 IDLE로 회복
                characterAnimator.SetBool("IsBack", false);
                characterAnimator.SetBool("IsWalk", true);

                yield break;
            }
            yield return(null);
        }
    }
コード例 #2
0
    public IEnumerator LibraryStartEvent()
    {
        // 실내에서 시작. 카메라 반전
        cameraSystem.changeViewport();

        // 플레이어 이동상태 잠금
        characterMover.moveType = CharacterMover.MoveType.LOCK;

        Character.transform.localScale = new Vector3(-1, 1, 1);
        characterMover.myAnimator.SetBool("IsWalk", false);
        characterMover.myAnimator.SetBool("IsSit", true);

        // 페이드 인 효과
        objFadeEfx.SetActive(true);
        FadeEfx.FadeIn();

        // 2초 대기
        yield return(new WaitForSeconds(2.0f));

        // 수진이 플레이어를 부르는 대화 시작
        //LibDialogue.TriggerDialogue();
        dialogueManager.StartDialogue(Sujin1);
        yield return(new WaitUntil(() => dialogueManager.canvasObj.activeSelf == false));

        dialogueManager.StartDialogue(JinHyung1);
        yield return(new WaitUntil(() => dialogueManager.canvasObj.activeSelf == false));

        dialogueManager.StartDialogue(Sujin2);
        yield return(new WaitUntil(() => dialogueManager.canvasObj.activeSelf == false));

        dialogueManager.StartDialogue(JinHyung2);
        yield return(new WaitUntil(() => dialogueManager.canvasObj.activeSelf == false));

        // 페이드 아웃 인
        FadeEfx.FadeOut();
        characterMover.myAnimator.SetBool("IsSit", false);
        yield return(new WaitForSeconds(1.2f));

        FadeEfx.FadeIn();


        // 튜토리얼 패널 좌우 활성화 + 설명 다이얼로그 출력
        tutorialPanel.OnLeftRight();
        // 폰트 색 시스템 메시지 색상으로 변경
        dialogueManager.textTalker.color       = new Color(0.2f, 0.6f, 1);
        dialogueManager.textSentence.color     = new Color(0.2f, 0.6f, 1);
        dialogueManager.textSentence.alignment = TextAnchor.UpperCenter;
        LibDialogue2.TriggerDialogue();
        yield return(new WaitUntil(() => dialogueManager.canvasObj.activeSelf == false));

        FindObjectOfType <Note>().AddMission("GoToRest");
        tutorialPanel.OffLeftRight();
        dialogueManager.textTalker.color       = new Color(1, 1, 1);
        dialogueManager.textSentence.color     = new Color(1, 1, 1);
        dialogueManager.textSentence.alignment = TextAnchor.UpperLeft;

        characterMover.moveType = CharacterMover.MoveType.COMMANDMOVE;

        yield break;
    }