캐릭터 선택 및 이동의 기본적인 기능을 갖춘 2D 프로그램
- 캐릭터 선택: 플레이어는 UI를 통해
CharacterButton.cs와JoinButton.cs를 사용하여 캐릭터를 선택하고 이름 입력. 선택된 캐릭터와 이름을PlayerPrefs에 저장 - 입력 처리:
PlayerInputController.cs가 플레이어의 입력 감지, 이를 이동 및 조준 이벤트로 변환. - 캐릭터 이동 및 조준:
CreatureController에서 발생한 이벤트가 이동 및 조준 스크립트로 전달되어 캐릭터의 동작 처리. - 카메라 이동:
CameraController.cs로 카메라가 플레이어를 중심으로 이동하도록 관리. - 플레이어 설정:
PlayerSettingManager.cs는 저장된 플레이어 데이터(이름)를 로드하여 UI에 반영.
-
플레이어 생성 및 씬 간의 상태 관리를 처리, 싱글톤 객체
InstantiatePlayer: 게임 시작 시 저장된 설정에 따라 플레이어 캐릭터(펭귄 또는 마법사)를 동적으로 생성
- 플레이어의 설정(현재는 이름)을 관리
- 필드:
Text playerName: UI에 플레이어의 이름을 표시하는 텍스트 컴포넌트 참조
Start(): (GameManager의 Awake에서 플레이어 생성된 이후에 동작)- 게임 시작 시
PlayerPrefs에서 저장된 이름이 있는지 확인(PlayerPrefs.HasKey("Name")), 있다면 이를 불러와playerName텍스트 컴포넌트에 반영
- 게임 시작 시
- 카메라가 플레이어를 따라다니며 화면 중앙에 플레이어를 배치하도록 업데이트
Start():- 게임 시작 시
GameObject.FindGameObjectWithTag("Player")를 사용하여 플레이어 객체 가져옴
- 게임 시작 시
Update():- 매 프레임마다 카메라와 플레이어 간의 방향 벡터를 계산하여 카메라의 위치 갱신
cameraSpeed를 이용하여 카메라가 플레이어를 따라가는 속도 조절
CreatureController 이동 및 시야(조준) 이벤트 처리 Broadcaster 역할. CreatureMovement 및 CreatureAimRotation과 같은 다른 컴포넌트들이 이 이벤트를 구독하여 동작
- 이벤트:
OnMoveEvent: 이동 동작 이벤트OnLookEvent: 시야 방향 이벤트
CallMoveEvent(Vector2 direction):- 이동 방향을 받아
OnMoveEvent를 호출하여 이동 관련 이벤트를 트리거
- 이동 방향을 받아
CallLookEvent(Vector2 direction):- 조준 방향을 받아
OnLookEvent를 호출하여 구독한 다른 컴포넌트가 캐릭터 회전 처리
- 조준 방향을 받아
- Unity의 InputSystem을 사용하여 플레이어의 입력 처리,
CreatureController를 상속받아 이동 및 조준 관련 이벤트를 처리. OnMove(InputValue value):- 플레이어가 입력한 이동 명령(WASD) 처리
- 이동 이벤트 호출: 입력 값을 정규화하고
CallMoveEvent를 호출하여 이동 이벤트를 발생시킴
OnLook(InputValue value):- 마우스를 통한 조준 입력(마우스 위치) 처리
- 화면에서 월드 좌표로 변환: 마우스 좌표를 화면 좌표에서 월드 좌표로 변환
- 조준 이벤트 호출: 캐릭터와 마우스 간의 방향 벡터를 계산하여 정규화하고 ****
CallLookEvent를 호출하여 캐릭터의 시야 방향을 조정
- 캐릭터의 실제 이동을 처리. 이동 입력 이벤트를 구독하고
Rigidbody2D통해 이동 FixedUpdate: 물리 관련 업데이트 처리, 프레임 속도와 상관없이 일관된 동작 보장Move&ApplyMovement:Move는 입력된 이동 방향 설정, 실제 이동은ApplyMovement에서 처리
- 플레이어의 마우스 입력에 따라 캐릭터가 향하는 방향 조정.
RotateSprite: 방향 벡터를 기반으로 각도를 계산하여 캐릭터 스프라이트를 회전OnAim: 입력 이벤트에 의해 트리거, 캐릭터의 월드 공간 내의 방향 조정.
- 캐릭터 선택 메뉴와 플레이어의 캐릭터 선택 처리
CharacterChoiceButton: 캐릭터 선택 UI 활성화CharacterButton: 선택된 캐릭터의 스프라이트를 변경하여 캐릭터 설정, 설정 후 메뉴 비활성화
- 플레이어가 이름과 캐릭터 타입 정보를 저장하고 씬 이동 관리
- 필드:
InputField inputName: UI에서 플레이어가 입력한 이름 저장Image characterImage: 선택된 캐릭터의 이미지를 담고 있으며 이를 통해 플레이어의 캐릭터 타입 결정
Join():- 플레이어가 "Join" 버튼을 클릭하면 호출
- 플레이어 타입과 이름 저장:
- 캐릭터 타입과 플레이어의 이름을 각각
PlayerPrefs.SetInt및PlayerPrefs.SetString으로 저장
- 캐릭터 타입과 플레이어의 이름을 각각
- 씬 전환:
SceneManager.LoadScene("MainScene")으로 메인 씬 이동
FindCharaterType():- 스프라이트 파일 이름의 첫 번째 문자를 사용하여 캐릭터 타입 결정