카메라 위치 조정 & Zoom In/Out
2023. 8. 17.

offset-카메라 위치 조정 => 어디를 바라볼지

카메라 시점을 조정하기 위해 serializefield enum으로 Foot 혹은 Head를 받는다.

처음에는 자꾸 카메라의 위치를 바꾸려고 했다. 그래서 한참 이상하게 했다..ㅠㅠ

다 못해서 집에와서 수정..항상 위치 수정하는 거 할 때 이해하는데 한참 걸리는 것 같다..벡터가 헷갈려서 그런지

 

zoom in/ zoom out 구현 - 인풋으로 마우스 휠업사용

https://docs.unity3d.com/ScriptReference/Input-mouseScrollDelta.html

 

Unity - Scripting API: Input.mouseScrollDelta

Success! Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable. Close

docs.unity3d.com

distance값을 조정했다.

뒤에서 바라보기 때문에 방향이 반대이다.

 

줌인 줌아웃, 카메라 위치 변경

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class FollowCamera : MonoBehaviour
{
    public enum ePosition
    {
        Foot,Head
    }
    [SerializeField] public Transform playerTrans;
    [SerializeField] private float distance = 1f;
    [SerializeField] private float height = 1f;
    [SerializeField] private Transform HeadTrans;
    [SerializeField] private Transform FootTrans;
    [SerializeField] private ePosition position;
    private Vector3 cameraPos;
    private float scrollInput;
 
    // Start is called before the first frame update
    void Start()
    {
     
    }

    // Update is called once per frame
    void Update()
    {

        if (this.position == ePosition.Head)//input이 head이면
        {      
            this.transform.LookAt(HeadTrans);

        }
        else if(this.position == ePosition.Foot)//input이 foot이면
        {
            this.transform.LookAt(this.FootTrans);
    
        }
        cameraPos = this.playerTrans.position + (this.playerTrans.forward * -1 * this.distance) + Vector3.up * height;

        scrollInput = Input.GetAxisRaw("Mouse ScrollWheel");

        if (scrollInput != 0 )//휠업 있으면
        {
            if (scrollInput > 0 && this.distance > 1.3f)//줌인
            {
                distance += 0.1f*(-1);
            }
            else//줌아웃
            {
                distance += 0.1f;
            }          
        }    
        this.transform.position = cameraPos;
    }
 
}
myoskin