[Unity 학습노트] Cinemachine을 사용하여 적을 잠그는 기능을 가진 3인칭 카메라 방안을 신속하게 실현합니다.
10478 단어 Unity
Unity 공식적인 Cinemachine 도구는 기능이 매우 강하고 사용하기 편리하며 다양한 기능을 쉽게 실현할 수 있습니다.본고는 적기를 잠그는 것을 간단하고 신속하게 실현하는 제3기 방안을 소개했다.다음 그림과 같은 효과
직접 소개하다.
Unity 2018.3 이상의 버전을 준비하고 공백 3d 프로젝트를 새로 만들고 Pakage Manager에서 Cinemachine 설치를 다운로드합니다(본고는 Unity 2019.3.0f3+Cinemachine 2.3.4를 사용합니다).
2. 3인칭 허카메라 Cinemachine Free Look, Follow라는 빈 물체, Look At라는 빈 물체를 새로 만든다.Hierarchy를 청결하게 유지하기 위해 CameraRoot라는 빈 물체를 새로 만들어 상기 세 가지와 Main Camera를 모두 포함시켰다.
3. CM FreeLook의 기본 속성 설정
CM Free Look의 Follow를 Follow 빈 물체로 설정하고, Look At을 Look At 빈 물체로 설정합니다(여기서 Follow를 유저 자체로 설정하지 않고, Look At을 잠글 적으로 설정하지 않습니까? 뒤에 놓고 구체적으로 실현할 때 설명합니다).나머지 항목은 기본값으로 유지됩니다.
4. CM FreeLook 두 축의 속성 설정
Unity 2018.3 이상의 버전을 준비하고 공백 3d 프로젝트를 새로 만들고 Pakage Manager에서 Cinemachine 설치를 다운로드합니다(본고는 Unity 2019.3.0f3+Cinemachine 2.3.4를 사용합니다).
2. 3인칭 허카메라 Cinemachine Free Look, Follow라는 빈 물체, Look At라는 빈 물체를 새로 만든다.Hierarchy를 청결하게 유지하기 위해 CameraRoot라는 빈 물체를 새로 만들어 상기 세 가지와 Main Camera를 모두 포함시켰다.
3. CM FreeLook의 기본 속성 설정
CM Free Look의 Follow를 Follow 빈 물체로 설정하고, Look At을 Look At 빈 물체로 설정합니다(여기서 Follow를 유저 자체로 설정하지 않고, Look At을 잠글 적으로 설정하지 않습니까? 뒤에 놓고 구체적으로 실현할 때 설명합니다).나머지 항목은 기본값으로 유지됩니다.
4. CM FreeLook 두 축의 속성 설정
5. CM FreeLook의 동작 속성 설정
6. Player 물체와 몇 개의 Enemy 물체를 만듭니다.
물체의 형상은 마음대로 설정할 수 있다. 본문은 고무주머니형으로 설정하기 편리하도록 하고 작은 공을 추가하여 Z축의 정방향에서 물체의 전방을 표시한다.
7. 카메라 제어 스크립트 작성
카메라가 따라가는 것을 제어하기 위해 새 CameraController를 만듭니다.CameraRoot에 추가하고 속성을 설정합니다.
CameraController.cs
using UnityEngine;
using Cinemachine;
public class CameraController : MonoBehaviour
{
[SerializeField]
private CinemachineFreeLook CmFreeLook;
[SerializeField]
private Transform follow;
[SerializeField]
private Transform lookAt;
[SerializeField]
private Transform player;
[SerializeField]
private Transform[] enemies;
[SerializeField]
private AimMark aimMark;
// 当前锁定的敌人的Index
private int lockedEnemyIndex;
private void Start()
{
// 给FreeLook虚拟相机设置Follow和LookAt的物体
CmFreeLook.Follow = follow;
CmFreeLook.LookAt = lookAt;
// 设置锁定标记的跟随对象
aimMark.SetAimTarget(lookAt);
}
private void Update()
{
// 按下空格时切换锁定的敌人
if(Input.GetKeyDown(KeyCode.Space))
{
lockedEnemyIndex = (lockedEnemyIndex + 1) % enemies.Length;
aimMark.PlayAimAnimation();
}
// 使lookAt的位置和旋转都和锁定的目标保持一致
lookAt.position = enemies[lockedEnemyIndex].position;
lookAt.rotation = enemies[lockedEnemyIndex].rotation;
// 使follow的位置和玩家一致
follow.position = player.position;
// 使follow的z轴正方向指向lookAt
follow.LookAt(lookAt);
}
}
이 중 AimMark
은 잠금 시 나타나는 UI로 관련 기능과 상관없이 볼 수 있습니다.여기에서 LookAt 빈 물체의 위치와 회전을 시작하여 잠금 중인 적과 일치하게 하고, Follow는 위치를 Player와 일치하게 유지하며 Z축을 LookAt으로 향하게 합니다.
왜 CM Free Look의 Follow와 Look At을 플레이어와 잠금 중인 Enemy로 직접 설정하지 않고 두 개의 간접 물체가 필요합니까?
Follow 빈 물체를 만들고 위치가 Player를 따라가며 LookAt 물체를 보는 목적은 카메라, Player, Enemy를 일직선에 위치시키기 위한 것이다
Orbits의 Binding Mode가 Lock To Tartget으로 설정되면 Follow 대상의 위치에 따라 회전 값이 Follow 대상의 회전 값이 됩니다.
Lock To Target의 세 가지 변체는 카메라의 회전축 위치는 모두 Follow 대상을 따르는 위치이지만 회전값의 따르는 방식은 다르다
Lock To Tartget: 旋转值跟随Follow对象的旋转值
Lock To Target On Assign: Start时或Follow对象更变时,旋转值设置为Follow对象的旋转值一次,之后则不再变化。
Lock To Target With World Up: 只有Yaw轴的旋转值跟随Follow对象的旋转值。
Lock To Target No Roll: Pitch轴和Yaw轴跟随Follow对象的旋转值,Roll轴不跟随
LookAt 빈 물체를 만드는 목적은 적을 잠글 때 렌즈가 매끄럽게 방향을 바꿀 수 있도록 전환하는 것이다.
CM FreeLook의 LookAt 객체를 직접 교환하면 렌즈가 순간적으로 객체를 가리키며 트윈되지 않습니다.그리고 LookAt 대상을 항상 빈 물체로 만들고 잠금을 전환할 때 빈 물체의 위치를 적의 위치를 잠그는 위치로 변경하면 카메라의 방향을 트위닝합니다.
8. 요점 요약
Reference
이 문제에 관하여([Unity 학습노트] Cinemachine을 사용하여 적을 잠그는 기능을 가진 3인칭 카메라 방안을 신속하게 실현합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/vzmc12/items/5ae295f5d7705b85509c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)