마우스 휠을 아래로 스크롤하면 플레이어와 카메라의 거리가 멀어지게 하고,
반대로 마우스 휠을 위로 스크롤하면 플레이어와 카메라의 거리가 가까워지도록 한다.
현재 시점 위치를 지정하고
void Start()
{
// 카메라의 가장 가까운 위치를 플레이어를 기준으로 현재 위치로 지정한다.
nearPosition = transform.localPosition;
}
멀어질 최대의 지점을 지정해서 Lerp를 적용한다.
// 카메라의 정면 방향을 기준으로 뒤쪽 방향의 5미터 지점
farPosition = nearPosition + transform.forward * -5;
// 마우스 스크롤 휠의 움직임 값을 받아온다.
wheelValue -= Input.GetAxis("Mouse ScrollWheel");
wheelValue = Mathf.Clamp(wheelValue, 0, 1.0f);
// 시작 위치 - 종료 위치 중의 임의의 지점을 구한다.
Vector3 camPosition = Vector3.Lerp(nearPosition, farPosition, wheelValue);
// 구한 임의의 지점을 카메라의 위치로 설정한다.
transform.localPosition = camPosition;
Lerp(선형 보간, Linear Interpolation)
최소점과 최대점 사이를 일정 간격으로 나누어 적용할 수 있는 기능
카메라의 위치정보를 Player에 종속시키기 위해 localPosition으로 전부 바꿔준다.
CameraRotate 전문
더보기
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// 마우스의 입력값을 이용해서 회전하고싶다.
public class CameraRotate : MonoBehaviour
{
public float rotSpeed = 200;
float rx;
float ry;
Vector3 nearPosition;
Vector3 farPosition;
float wheelValue = 0;
// Start is called before the first frame update
void Start()
{
// 카메라의 가장 가까운 위치를 플레이어를 기준으로 현재 위치로 지정한다.
nearPosition = transform.localPosition;
}
// Update is called once per frame
void Update()
{
// 마우스의 입력값을 이용해서
float mx = Input.GetAxis("Mouse X");
float my = Input.GetAxis("Mouse Y");
rx += my * rotSpeed * Time.deltaTime;
ry += mx * rotSpeed * Time.deltaTime;
// rx의 회전 각을 제한하고싶다. +80도 -80도
rx = Mathf.Clamp(rx, -80, 80);
// 회전하고싶다.
transform.eulerAngles = new Vector3(-rx, ry, 0);
// 카메라의 정면 방향을 기준으로 뒤쪽 방향의 5미터 지점
farPosition = nearPosition + transform.forward * -5;
// 마우스 스크롤 휠의 움직임 값을 받아온다.
wheelValue -= Input.GetAxis("Mouse ScrollWheel");
wheelValue = Mathf.Clamp(wheelValue, 0, 1.0f);
// 시작 위치 - 종료 위치 중의 임의의 지점을 구한다.
Vector3 camPosition = Vector3.Lerp(nearPosition, farPosition, wheelValue);
// 구한 임의의 지점을 카메라의 위치로 설정한다.
transform.localPosition = camPosition;
}
}
'공부 > Unity 기초' 카테고리의 다른 글
3D FPS - 4 / 가리키는 대상 표시 (0) | 2022.05.18 |
---|---|
3D FPS - 3 / 무기 제작 (0) | 2022.05.18 |
3D FPS - 1 / 이동과 회전, 점프 (0) | 2022.05.17 |
2D 슈팅 - 9 / 누적점수에 따른 속도변경 (0) | 2022.05.17 |
2D 슈팅 - 8 / 함정 추가 (0) | 2022.05.16 |