Unity6 3Dアクションゲームのキャラクターカメラです。
キャラクターの周りをぐるりと回転するカメラです。Unity6になって、コンポーネントが変更されていましたので、共有しておきます。
CinemachineCmameraの導入からキャラクターカメラのテストまでです。
1.Window→PackageManger→UnityResistry→Cinemachine→Install
2.GameObject→Cinemachine→CinemachineCamera
3.Hiararchy→CinemachineCamera→TrackingTargetにプレイヤーオブジェクトをアタッチ
4.CinemachineCamera→PositionContorolをPositionComposerに変更
5.CinemachineCamera→RotationControlをPanTlintに変更
6.CinemachinePositionComposer→CamereDistanceを3に変更→TargetTrackingのTargetOffsetのYを1.2ぐらいに変更
7.CinemachinePanTlint→ReferenceFrameをParentObjectに変更→RecenterTargetをLookAtTargetForwardに変更
8.CinemachinePanTlintのPanAxisのRangeを-180から180→Wrapのチェックにオン
9.TlitAxisのRangeを-30から30→→Wrapのチェックにオフ
10.コードを記入(PlayerClass)
using Unity.Cinemachine;
using UnityEngine;
using UnityEngine.InputSystem;
public class PlayerClass : MonoBehaviour
{
[SerializeField]
private CinemachineCamera cinemachineCameraPlayer;
private Vector2 vector2Camera;
private void Update()
{
//スティック入力
vector2Camera = Gamepad.current.rightStick.value;
}
private void LateUpdate()
{
//水平回転
cinemachineCameraPlayer.GetComponent<CinemachinePanTilt>().PanAxis.Value += vector2Camera.x * Time.deltaTime * 100f;
//垂直回転
cinemachineCameraPlayer.GetComponent<CinemachinePanTilt>().TiltAxis.Value += vector2Camera.y * Time.deltaTime * 100f;
//垂直回転の角度の制限(-5度から30度)
cinemachineCameraPlayer.GetComponent<CinemachinePanTilt>().TiltAxis.Value = Mathf.Clamp(cinemachineCameraPlayer.GetComponent<CinemachinePanTilt>().TiltAxis.Value, -5, 30);
}
}
11.キャラクターにPlayerClassをアタッチ→PlayerClassのcinemachineCameraPlayerにHiararchyのCinemachineCameraをアタッチ
12.エディタ再生して、右スティックを回して確認
☆補足
//水平回転の逆回転
cinemachineCameraPlayer.GetComponent<CinemachinePanTilt>().PanAxis.Value -= vector2Camera.x * Time.deltaTime * 100f;
//垂直回転の逆回転
cinemachineCameraPlayer.GetComponent<CinemachinePanTilt>().TiltAxis.Value -= vector2Camera.y * Time.deltaTime * 100f;
このコードは自由に使用できます。ただし動作の保証はしていません。
Unity6 3Dアクションゲームのキャラクターカメラでした。ありがとうございました。
