- 가상카메라를 통해 줌인 줌아웃 기능 넣기.
using Cinemachine;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class WeaponZoom : MonoBehaviour
{
[SerializeField] float fov_Orizin = 40f;
[SerializeField] float fov_Zoom = 10f;
[SerializeField] CinemachineVirtualCamera virtualCamera;
bool isZoom;
void Update()
{
if (Input.GetMouseButtonDown(1))
{
if (isZoom == false)
{
isZoom = true;
virtualCamera.m_Lens.FieldOfView = fov_Zoom;
}
else
{
isZoom = false;
virtualCamera.m_Lens.FieldOfView = fov_Orizin;
}
}
}
}
- 가상카메라에 Vertical FOV를 움직이면서 줌인할만한 적절한 값을 찾아낸다.
- 무기에 따라 줌이 가능한 무기를 구현하려면 무기에 줌 스크립트를 넣는다.
- 캐릭터에 줌 스크립트를 넣으면 무기 상관없이 줌 가능.
using Cinemachine;
using StarterAssets;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class WeaponZoom : MonoBehaviour
{
[SerializeField] float fov_Orizin = 40f;
[SerializeField] float fov_Zoom = 10f;
[SerializeField] CinemachineVirtualCamera virtualCamera;
FirstPersonController firstPersonController;
bool isZoom;
private void Start()
{
firstPersonController = GetComponentInParent<FirstPersonController>();
}
void Update()
{
if (Input.GetMouseButtonDown(1))
{
if (isZoom == false)
{
isZoom = true;
virtualCamera.m_Lens.FieldOfView = fov_Zoom;
firstPersonController.RotationSpeed = 0.2f;
}
else
{
isZoom = false;
virtualCamera.m_Lens.FieldOfView = fov_Orizin;
firstPersonController.RotationSpeed = 1f;
}
}
}
}
- 무기 자체에 줌 스크립트를 넣으면 GetComponentInParent<>();를 사용해서 플레이어 캐릭터(부모객체)에 있는 컴포넌트를 가져와서 줌했을시 마우스 민감도를 수정한다.
@ 무기를 줌인 상태로 다른무기로 교체하면 줌인 상태가 그대로 있어서 무기 교체하면 줌도 풀리게끔 설정.
using Cinemachine;
using StarterAssets;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class WeaponZoom : MonoBehaviour
{
[SerializeField] float fov_Orizin = 40f;
[SerializeField] float fov_Zoom = 10f;
[SerializeField] CinemachineVirtualCamera virtualCamera;
FirstPersonController firstPersonController;
bool isZoom;
private void OnDisable()
{
ZoomOut();
}
private void Start()
{
firstPersonController = GetComponentInParent<FirstPersonController>();
}
void Update()
{
if (Input.GetMouseButtonDown(1))
{
if (isZoom == false)
{
ZoomIn();
}
else
{
ZoomOut();
}
}
}
private void ZoomIn()
{
isZoom = true;
virtualCamera.m_Lens.FieldOfView = fov_Zoom;
firstPersonController.RotationSpeed = 0.2f;
}
private void ZoomOut()
{
isZoom = false;
virtualCamera.m_Lens.FieldOfView = fov_Orizin;
firstPersonController.RotationSpeed = 1f;
}
}
유니티 총 타입 별로 총알 구분하기 (0) | 2024.09.16 |
---|---|
유니티 플레이어 무기 교체(키입력, 마우스휠), 오류 해결 (1) | 2024.09.14 |
유니티 죽었을때 UI 띄우기 (0) | 2024.09.12 |
유니티 레이캐스트로 총 맞은 곳에 이펙트(파티클) 생성하기 (0) | 2024.09.11 |
유니티 AI navigation 사용, 적 추적하기, 추적 범위 확인하기 (0) | 2024.09.10 |