unity 렌즈 줌 줌 줌 방식 실현
2292 단어 unity
//camera = GetComponent(); //
//GameObject.FindWithTag("MainCamera") // Tag
//
camera = Camera.main;
방식1: 표지 위치로 근원 두 가지 상태 전환을 제어하고 한 번에 근원을 당긴다. private bool isFar = true;
private void Zoom1()
{
if (Input.GetMouseButtonDown(1))
{
//
isFar = !isFar;
if (isFar)
{
// 20 --》 60
camera.fieldOfView = 60;
}
else
{
// 60 --》 20
camera.fieldOfView = 20;
}
}
}
방식2: 점점 가까워지고 멀어지다 private void Zoom2()
{
if (Input.GetMouseButtonDown(1))
{
//
isFar = !isFar;
}
if (isFar)
{
// 20 --》 60
if (camera.fieldOfView < 60)
camera.fieldOfView += 2;
}
else
{
// 60 --》 20
if (camera.fieldOfView > 20)
camera.fieldOfView -= 2;
}
}
방식3: 속도의 동적 변화, 목표에 빨리 접근할 때 느리다 private void Zoom3()
{
if (Input.GetMouseButtonDown(1))
{
//
isFar = !isFar;
}
if (isFar)
{
// 20 --》 60 Lerp( 、 、 )
camera.fieldOfView = Mathf.Lerp(camera.fieldOfView, 60, 0.1f);
//Vector3.Lerp
//Quaternion.Lerp
//Color.Lerp
}
else
{
// 60 --》 20
camera.fieldOfView = Mathf.Lerp(camera.fieldOfView, 20, 0.1f);
}
}
방식4: 여러 등급의 축소를 그룹으로 제어합니다 //60 50 40 30 20
public float[] zoomLevels;
private int currentLevel;
private void Zoom()
{
if (Input.GetMouseButtonDown(1))
{
//
//currentLevel++;
//currentLevel = currentLevel < zoomLevels.Length - 1 ? currentLevel + 1 : 0;
currentLevel = (currentLevel + 1) % zoomLevels.Length;
}
camera.fieldOfView = Mathf.Lerp(camera.fieldOfView, zoomLevels[currentLevel], 0.1f);
}