와챠의 우당탕탕 코딩 일기장
[유니티] 스파르타 코딩 : 게임 개발 - 2주차 본문
반응형
오늘 한 것
- 태그 사용
- 적 구현
- 적에 닿으면 게임 오버
- 동작 AI 로직 구현
- 점프 및 더블 점프 구현
- 캐릭터 움직임에 따라 이미지 X축 반전하기
오늘 배운 것 정리
- 기존 프리팹으로 새 프리팹 만들기
- 기존 프리팹의 오브젝트를 우클릭 > Prefab > UnpackCompletely (기존 프리팹과 연결 끊기)
- 태그로 오브젝트 구분하기 (유니티의 태그 기능 이용)
- 해당 오브젝트 클릭 > 상단부에 Tag 표시의 드롭다운 클릭 > AddTag > + > 태그 추가!
- GetKey 함수 : 누르고 있는 동안 내내 true 반환
- GetKeyDown 함수 : 최초에 누른 한번만 true 반환
- Component : 오브젝트 동작 정의하는 코드(.cs)
- 같은 Component에서 같은 rigid를 사용 하는 경우 주의!
- 현재 프로젝트에서 Move와 Jump에 같은 rigid를 사용함
- Move의 좌/우 이동은 되는데 Jump가 안 되는 문제 발생
- > 이유 : Move에서 direction = Vector2.left * moveSpeed;를 사용해서 y좌표가 0이 되기 때문
- Vector2.left == Vector2(-1f, 0f)
- > 해결 : y값은 기존 y값을 저장하기
- direction.y = rigid.velocity.y;
- 점프 제어를 위해 주인공 오브젝트에 BoxCollider2D를 추가하기
- rtan_playable 프리팹의 아래쪽 sprites에 추가하기
- 발바닥에 조그맣게 붙이고 Is Trigger에 체크하기
- IsTrigger 활성화 : Collider는 충돌체크만 하고 실제로 충돌체크한 오브젝트를 막지 않음.(투명 상테라고 보면 될 듯)
- IsTrigger 비활성화 : 충돌체크한 오브젝트를 막음(ex - 벽에 막히면 앞으로 가지 못 함)
- OnTriggerEnter2D 함수 : "트리거 설정한" 박스 콜라이더에 다른 박스 콜라이더가 감지됐을 때(충돌 발생) 호출
- OnCollisionEnter2D 험수 : 박스 콜라이더에 닿으면 호출
- 주인공 오브젝트 투명하게 하기 :
- render.color = new Color(1, 1, 1, 0.5f); // 원래 색은 그대로, 투명도만 바꾸기
- (public SpriteRenderer render;)
- render.color = new Color(1, 1, 1, 0.5f); // 원래 색은 그대로, 투명도만 바꾸기
- 주인공에게 중력 제거하기 :
- 현재 주인공에게는 2개의 콜라이더가 있음(주인공 자체 콜라이더, 점프 제어를 위해 발바닥에 붙인 콜라이더)
- 이 두 개의 콜라이더의 enable을 false로 만들어주면 됨
- > 콜라이더(Box Collider 2D )는 충돌 체크를 하는 역할을 하는데 이를 제거해버리면 충돌체크를 하지 않아 그냥 바닥으로 떨어지는 것
- rigid.AddForce(Vector2.up * jumpHeight, ForceMode2D.Impulse);
- // AddForce : 어떠한 방향으로 움직이기, ForceMode2D.Impulse : 강제로 올리기
- // AddForce : 어떠한 방향으로 움직이기, ForceMode2D.Impulse : 강제로 올리기
오늘의 오류
- 주인공 오브젝트가 왼/오른쪽으로 잘 가다가 콜라이더에 닿으면 갑자기 90도로 회전함....
- > 해결 : Freeze Rotation Z 체크!
- 코드에 이상이 없는데 적 오브젝트가 움직이지 않음....
- > 해결 : 적 오브젝트 프리팹 > Animator 컴포넌트 > ApplyRootMotion 값 해제
오늘의 질문
- 공룡 오브젝트가 벽 오브젝트 뒤에 있는데, 공룔 오브젝트를 앞으로 오게 하려면 어떻게 해야 하나?
- 다음 시간에 배우긴 하는데, Sprite Renderer의 Order in Layer 값을 크게!!
- 비주얼 코드 자동 완성이 안 됨...
- 1, ExternalTool 확인
- 유니티 상단 메뉴바에서 Edit → Preference
- External Script Editor를 Visual Studio Community 로 적용
- 그래도 해결이 안 되면.... 2, Visual Studio Tools for Unity 설치 확인
- 비주얼 스튜디오 상단 메뉴에서 도움말 → 업데이트 확인 → 업데이트가 존재할 경우 업데이트 진행
- 비주얼 스튜디오 Installer 실행 (기본 위치 : C:\Program Files (x86)\Microsoft Visual Studio\Installer\vs_installer.exe)
- 해당 비주얼 스튜디오 버전에 수정 버튼 → 워크로드 → 게임 → Unity를 사용한 게임 개발 선택 후 설치
- 윈도우 재실행 후 유니티 실행 → 임의의 코드파일(*.cs) 더블클릭으로 비주얼 스튜디오 실행
- 1, ExternalTool 확인
- 드래그 앤 드롭하는 객체가 다른데 뭐가 틀린 거지?
- 그냥... 리지드바디2D가 있는 객체를 변수에 할당하고 콜라이더 있는 객체를 변수에 할당하는... 컴포넌트의 개념을 헷갈려서 이런 질문이 생긴 듯. 변수가 원하는 컴포넌트가 있는 객체를 할당하면 됨
+) ... 그냥 강의 들으면 누구나 1등인 거니?
반응형
'코딩 일기장 > Unity' 카테고리의 다른 글
[유니티] 스파르타 코딩 : 게임 개발 - 5주차(마지막) (0) | 2021.06.23 |
---|---|
[유니티] 스파르타 코딩 : 게임 개발 - 4주차 (0) | 2021.06.21 |
[유니티] 스파르타 코딩 : 게임 개발 - 3주차 (0) | 2021.06.19 |
[유니티] 스파르타 코딩 : 게임 개발 - 1주차 (0) | 2021.06.07 |
[유니티] 스파르타 코딩 : 게임 개발 - 0주차 (0) | 2021.05.30 |
Comments