• 티스토리 홈
  • 프로필사진
    SiJun-Park
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
SiJun-Park
  • 프로필사진
    SiJun-Park
    • 분류 전체보기 (121)
      • Unity (80)
        • RPG Project (39)
        • FPS Project (30)
        • 기타 - 개발 (11)
      • 개발 (35)
        • 임베디드 소프트웨어 (7)
        • 컴파일러 (6)
        • 기계학습 (8)
        • 보안 (8)
        • 그래픽스 (2)
        • 그 외 (4)
      • 코딩문제 (5)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • RPG Project - 38 [ Boss Monster Camera Moving ]
        2024년 12월 05일
        • SiJun-Park
        • 작성자
        • 2024.12.05.:53

        이번 38에서는 보스 몬스터의 카메라 효과를 만들었습니다.

         

        원하였던건 카메라가 이동을 하며 보스 몬스터를 비추어주고 보스가 모션을 하는 것 까지 보여지는 것이 목표입니다.

        Boss

        먼저 Boss를 소환해주고 적절한 위치에 보스를 놔두어 주었습니다.

         

        이제 위와 같이 벽을 하나 쳐줍니다. 이 벽을 통과를 한다면 카메라 무빙을 시작하게 합니다.

        이때 유저는 가만히 못움직이게 만들어 줍니다.

        보스 체력 Prafab

        일반 몬스터와 다르게 보스 몬스터의 체력은 화면의 맨 위에 뜨게 하기 위해 위 이미지 처럼 만들었습니다.

         

         private void OnTriggerEnter(Collider other)
            {
                    #if UNITY_EDITOR
                            speed = 5.0f;
                    #endif
                if (other.CompareTag("Player")) {
        
                    player = other.GetComponent<UserControl>();
                    camera = Camera.main;
                    player._CurrentState = UserControl.State.Boss;
        
                    player._Action.SetFloat("X", 0);
                    player._Action.SetFloat("Y", 0);
        
                    player._Action.Play("Idle,Walk");
                    player._skilltype = 0;
                    StartCoroutine(Moving());
                }
            }

        플레이어가 들어오면 모든 Action을 초기화를 해주고 상태를 Boss 상태로 바꾸어 줍니다.

            IEnumerator Moving()
            {
        
                while (Vector3.Distance(camera.transform.position, Point.position) > 0.1f)
                {
                    camera.transform.position = Vector3.Lerp(camera.transform.position, Point.position, Time.deltaTime * speed);
                    camera.transform.LookAt(_Boss_Transform);
                    yield return null;
                }
                SoundManager._instance.PrivatePlaySound(Fly, player.transform);
                _Action.SetTrigger("Jump");
                yield return new WaitForSeconds(0.5f);
                while (_Action.GetCurrentAnimatorStateInfo(0).IsName("Jump")) yield return null;
              
                _Action.SetTrigger("Scream");
                yield return new WaitForSeconds(0.75f);
                SoundManager._instance.PrivatePlaySound(Scream, player.transform, 0.7f);
                Vector3 pos = camera.transform.localPosition;
                float current = 0f;
                while (current < 2)
                {
                    camera.transform.localPosition = pos + Random.insideUnitSphere * 0.35f;
                    current += Time.deltaTime;
                    yield return null;
                }
                while (_Action.GetCurrentAnimatorStateInfo(0).IsName("Scream")) yield return null; // Jump 애니메이션이 끝날 때까지 대기
                camera.transform.localPosition = pos;
                UserControl._instance._CurrentState = UserControl.State.Idle;
                _HP.gameObject.SetActive(true);
                Destroy(gameObject);
        
                yield return null;
            }

         

        카메라가 부드럽게 이동을 하기 위해서 Lerp를 사용해서 부드럽게 이동을 하고 

         

        원하는 동작들을 넣어줍니다.

         

        이때 저는 점프를 한 후 소리지리는 모션을 넣었습니다.

         

        그래서 해당 액션이 실행중일땐 기다려주고 실행이 끝나면 다음으로 넘어가 함수를 실행하도록 하였고

         

        마지막으로는 소리 지를 때 카메라가 흔들리는 효과를 주기 위해 랜덤으로 포지션을 움직이게 하였습니다.

         

        그 다음에 끝난다면 보스 HP Prefab을 보여지도록 합니다.

         

         

        결과

         

         

        모션마다 이벤트를 주면 조금 더 부드럽게 표현이 가능 할 것 같습니다.

        'Unity > RPG Project' 카테고리의 다른 글

        RPG Project - 39 [ Save - Load System ]  (0) 2025.01.16
        RPG Project - 37 [ 몬스터 Nav 미끄러짐 현상, HP Fill Amount 버그 ]  (0) 2024.11.29
        RPG Project - 36 [ 몬스터 디버프 ]  (0) 2024.11.23
        RPG Project - 35 [ 방패 막기 ]  (0) 2024.11.22
        RPG Project - 34 [ Monster Drop Item ]  (0) 2024.11.21
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바