본문 바로가기

Unity/Unity3D_MyProject

Unity3D_MyProject - 1일차(플레이어 이동, 다중맵, 카메라이동)

1. Map오브젝트 생성

  • - 1개의 시작스테이지
  • - 10개의 챕터1스테이지, 10개의 챕터2 스테이지
  • - 3개의 중간보스스테이지, 3개의 천사스테이지
  • - 1개의 마지막보스스테이지
  • - 각 스테이지Map에는 다른 스테이지로 이동할 WarpGate 트리거콜라이더와 이동시 시작할 위치가 될 StartPos Transform 위치정보를 포함(Tag와 Layer설정)

2.스테이지를 관리할 StageMgr 오브젝트및 StageMgr스크립트 생성

  • - 싱글톤구현


  • - 기본적인 변수 셋팅
  • - 플레이어 오브젝트를 public으로 컴포넌트창에 드래그 앤 드랍한 이 후 [HideInInspector]로 숨김

  • - 각 스테이지의 시작위치정보를 원소로 담은 챕터1과 챕터2리스트를 원소로 하는 배열을 생성
  • - 3개의 천사스테이지 시작위치정보 일반 리스트, 3개의 중보스테이지 시작위치정보 일반리스트 생성
  • - 1개의 막보스테이지 시작위치정보 변수 생성


  • - PlayerSc에서 플레이어가 WarpGate에 trigger하면 호출될 NextStage()함수 구현
  • - 원하는 스테이지 이동순서는 1,2,3,4(챕터1스테이지) -> 5(천사스테이지) ->6,7,8,9(챕터1스테이지) -> 10(중보스테이지) -> 11,12,13,14(챕터2스테이지) -> 15(천사스테이지) -> 16,17,18,19(챕터2스테이지) -> 20(막보스테이지)
  • - 챕터1과 챕터2의 구별은 현재스테이지의 1의 자리를 가져오기위해 10을 나누어서 arrayIndex를 사용
  • - 각 챕터배열안에서 랜덤한 인덱스를 뽑아서 해당인덱스를 cleardeIndex에 저장하고
  • - 해당 인덱스에 해당하는 스테이지의 시작위치로 플레이어를 이동시킴
  • (*위 로직이 실행되기전 DestroyStage()에 의해 플레이어가 이동되기 전 스테이지를 비활성화)
  • - 카메라이동

  • - 이전스테이지의 종류에따라 해당스테이지Map오브젝트를 비활성화 시키고 이전스테이지와 관련된 각 챕터안의 시작위치정보인덱스를 삭제

  • - 컴포넌트창에서 알맞은 시작위치정보를 할당


3.카메라 이동

- transform.position.x를 직접적으로 사용불가 임시위치정보를 만들어 각방향별로 컨트롤 후 다시 transform.position에 재할당하는 방식으로 구현

4.캐릭터이동

- 캐릭터와 벽충돌시 떨림방지를 레이케스트로 해결


-결과