- 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일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)