Notice
Recent Posts
Recent Comments
Link
박민혁의 개발
유니티 게임 도중 키조작 바꾸기 본문
게임에서 흔히 혼란 같은 디버프에 걸릴시 키보드 상하좌우 조작이 바뀌거나
어드벤쳐 게임 같은경우 특정 상황에 따라 키조작이 바뀌는 경우가 있다
오늘은 input system을 이용한 키조작 변경을 알아보자
방법1. 액션맵 전체를 바꾸기
다음은 뉴 인풋 시스템의 플레이어의 인풋 시스템이다
현재 플레이어는 w 는 up s는 down 좌우도 마찬가지
플레이어1은 w는 down s 는 up 좌우도 반대인 상태이다
즉 특정 상황에 난 액션맵을 플레이어에서 플레이어1로 바꿔 상하좌우를 반대로 하고 싶은것
playerInput = targetPlayer.GetComponent<PlayerInput>();
if (playerInput.currentActionMap.name == "Player")
{
playerInput.SwitchCurrentActionMap("Player1");
}
else
{
playerInput.SwitchCurrentActionMap("Player");
}
현재 나는 특정 상황이 여러번 - 아이템 먹기
상태이기 때문에 아이템을 1번 먹으면 플레이어1로
그아이템을 한번더 먹으면 다시 플레이어 상태 (180도의 180도 = 그대로)
어쨋든
인풋시스템.SwitchCurrentActionMap("액션맵 이름");
으로 교환 하는것
방법2. 특정 키만 바꾸기
1번 방법은 키입력 전체를 바꾸기에 키보드 상하좌우만 바꾸는 현재 상태에선
룩,어택,스킬,구르기,장전은 그대로 라서 무브만을 위해 바꾸는건 비효율적인 상태기에
무브2를 만들고 무브를 비활성화 시키고 무브2를 활성화 시킬 생각이다
if (playerstatHandler.isNoramlMove)
{
playerInput.actions.FindAction("Move2").Enable();
playerInput.actions.FindAction("Move").Disable();
playerstatHandler.isNoramlMove = false;
}
else
{
playerInput.actions.FindAction("Move2").Disable();
playerInput.actions.FindAction("Move").Enable();
playerstatHandler.isNoramlMove = true;
}
난 무브1상태 무브2상태가 있기에 플레이어스탯핸들러에 불값을 한개 추가해
불값에 따라 상태를 바꾼다
코드는
인풋시스템.actions.FindAction("이름").Enable(); // 활성화
인풋시스템.actions.FindAction("이름").Disable(); // 비활성화
아쉽게도 인풋시스템에 미리 비활성화 시켜둘순 없는듯 하다 그렇기 플레이어 스탯 핸들러에서
awake에 playerInput.actions.FindAction("Move2").Disable();을 해두어 시작하자마자 move1만을 활성화 시켰다.
'TIL' 카테고리의 다른 글
유니티 생성한 프리팹의 겟컴포넌트하지 않고 해당 클래스 바로 접근하기 (0) | 2023.11.15 |
---|---|
유니티 델리게이트 이벤트 초기화 하기 (0) | 2023.11.14 |
팀 프로젝트 너도 할수 있어 pun rpc를 이용한 증강 만들기 (0) | 2023.11.10 |
플레이어와 몬스터가 부딪힌후 밀릴때. (0) | 2023.11.09 |
랜덤한 방향성 부여하기 (0) | 2023.11.08 |