기존 InputManager에서 InputSystem으로 갈아타면서 수정해주고 알아가야할게 많다.
마우스 스크롤 값 또한 구글링을 해도 잘 나와있지 않았다.
> 먼저 InputActions에서 마우스 휠값을 받을 Actions을 생성해야 한다.
> Action Type은 Pass Through로, Control Type은 Axis로 설정 한다.
> 그리고 Actions 오른쪽의 +를 눌러 Add Binding을 눌러 바인드를 생성한다.
> Path에서 Mouse를 누르고 아래쪽에 Scroll의 Y값을 받도록 설정한다.
Action은 설정이 되었고, 스크립트를 보기전에 먼저 InputActions의 클래스를 생성해야 한다.
아래와 같이 Generate C# Class를 체크하고 Apply를 눌러 클래스를 생성하자(클래스 네임은 사진과 다를 수 있음).
이제 스크립트로 가서 생성한 클래스를 사용할 수 있다.
public class Player : MonoBehaviour
{
private PlayerInputAction _playerInputAction; // 생성한 클래스(클래스 이름은 다를 수있음)
private float scrollY; // 스크롤 값을 저장할 float 변수
private void OnEnable()
{
_playerInputAction = new PlayerInputAction();
_playerInputAction.Enable();
// 이벤트를 이용하여 스크롤이 발생했을 시 스크롤의 값을 변수에 저장한다.
// 스크롤 값이 120과 -120만 받아오기 때문에 0.02f를 곱하여 낮출 수 있다.
_playerInputAction.GamePlay.MouseScrollY.performed += x => scrollY = x.ReadValue<float>() * 0.02f * -1;
// 카메라의 FOV값을 불러옴
normalCamera.m_Lens.FieldOfView = PlayerPrefs.GetFloat("ZoomAmount", 0);
}
private void OnDisable()
{
_playerInputAction.Disable();
}
private void OnApplicationQuit()
{
// 카메라의 FOV값을 저장
PlayerPrefs.SetFloat("ZoomAmount", normalCamera.m_Lens.FieldOfView);
}
private void FixedUpdate()
{
// 스크롤을 내릴 때, FOV가 15밑으로 더 이상 내려가지 않도록 제한
if (scrollY < 0 && normalCamera.m_Lens.FieldOfView <= 15)
{
normalCamera.m_Lens.FieldOfView = 15;
}
// 스크롤을 올릴 때, FOV가 60 이상으로 올라가지 않도록 제한
else if (scrollY > 0 && normalCamera.m_Lens.FieldOfView >= 60)
{
normalCamera.m_Lens.FieldOfView = 60;
}
// 스크롤 값을 통해 FOV 값을 바꿈
else
{
normalCamera.m_Lens.FieldOfView += scrollY;
}
}
}
이렇게 간단한데 사실 구글링과 유튜브를 엄청 찾아봐서 알아냈다는 거..ㅠㅠ
performed를 사용하여 이벤트를 설정해주는 것이 중요하다!
_playerInputAction.GamePlay.MouseScrollY.performed += x => scrollY = x.ReadValue<float>() * 0.02f * -1;
한줄 코드 대신 더 넣고 싶으면 아래와 같이 하면 된다.
_playerInputAction.GamePlay.MouseScrollY.performed += x =>
{
scrollY = x.ReadValue<float>() * 0.02f * -1;
...
};
적용한 게임 플레이 화면
'게임 개발 공부 > Unity' 카테고리의 다른 글
Unity Script에서 HEX(Hexadecimal) 값으로 Color 변환하는 법 (1) | 2024.01.28 |
---|---|
유니티 드로우콜 (0) | 2022.07.08 |
Cinemachine Free Look Camera 민감도 조절 (0) | 2022.02.20 |
Command Pattern (0) | 2022.02.08 |
적 케릭터 닷지 회피 구현(Enemy Dodge System) (0) | 2022.01.20 |