내일배움캠프 (Unity_8기) TIL 17일차

2023. 9. 4. 21:25내일배움캠프 Unity

오늘 학습한 것

- 코드카타 : 정수 내림차순으로 배치하기

- 스파르타 코딩 Unity 강의를 들으며 캐릭터 이동과 플레이어의 입력을 주로 이용하는 게임의 틀을 제작

 

0. 코드카타 : 정수 내림차순으로 배치하기

1. 입력

2. 캐릭터 이동

3. 맵 구성

4. 충돌 처리

5. 조준 시스템

6. 공격 시스템

 

0. 코드카타 : 정수 내림차순으로 배치하기

 

나의 풀이 / 다른 사람의 풀이

이번 문제는 아무리 계속해서 풀어도 문제를 풀지 못해 다른 사람의 풀이를 참고했다.

다른 사람의 풀이는 C#에서 제공되는 함수를 사용해서 풀이했는데 나의 풀이 또한 동일한 기능을 위한 코드로 작성하였다.

다만 마지막에 answer에 xArr에 있는 정수를 1의 자리수, 2의 자리수, 3의 자리수에 하나씩 넣는 방식으로 풀이했는데 이 방법에서 코드를 잘못짠 것으로 보인다. 생각을 비우고 다시 확인 할 필요가 있다고 생각한다.

 

1. 입력

    입력은 유니티 프로그램의 Window-Package Manager-"Input System"을 통해 확정성 있는 입력관리를 할 수 있다.

    해당 프로젝트에서는 InputAction 파일을 만들고 키보드를 통해 이동을 처리하기 위한 Move, 마우스를 통해 캐릭터가

    보는 곳(각도)을 구현하기 위한 Look, 캐릭터가 총, 활 등 무언가를 쏘는 무기를 사용할때 총알, 화살 등을 표현하기 위한

    Fire 3가지의 Action을 만들었다.

    "PlayerInputController" 스크립트를 만들어 입력이 들어왔을 때 Move, Look, Fire에 해당하는 메소드를 하나씩 제작 

 

2. 캐릭터 이동

    입력을 받아 해당하는 방향으로 이동하는 메소드. InputAction에서 설정한 값과 연계되어

    w : 위, s : 아래, a : 왼쪽, d : 오른쪽의 방향값을 얻는다.

 

3. 맵 구성

    UI - 2D - Tilemap 오브젝트를 생성하고 타일처럼 찍어낼 이미지 파일을 가져온 후 브러쉬로 사용.

    (아래 최종결과물 확인)

 

4. 충돌 처리

    맵 구성이 완료 된 후 플레이어가 맵을 벗어나지 않도록 테두리 부분에 Collider를 적용

    현재 사용하진 않지만 IsTrigger가 켜짐과 꺼짐에 따라 충돌했을 때 어떤 이벤트를 발생시킬지, 인지만 할지 선택 가능

 

5. 조준 시스템   

    마우스 위치를 입력받아 Z축을 축으로 회전하는 메소드 제작. 회전한 각도가 90도가 넘어가면(마우스가 캐릭터의 반대

    쪽으로 이동하면) 캐릭터를 Filp하여 앞 뒤 전환하는 것을 구현

    참고 : [SerializeField]는 Unity프로그램에서 관리할 수 있도록 만드는 것으로 private임에도 public처럼 유니티 프로그램                내에서 값을 변경할 수 있다.

 

6. 공격 시스템

    Unity 프로그램에서 화살 Prefab을 제작 후 화살 Prefab을 계속해서 생성하는 코드 작성

    현재 계속해서 찍어내는 방식이지만 마우스 좌클릭을 누르면 생성하는 방식으로 변경 필요

 

!최종 결과물!

최종 결과물