¡¡Cinemachine ¤òÍøÍѤ¹¤ë¾ì¹ç¤Î¥¹¥¯¥ê¥×¥È¤Ç¤¹¡£
¡¡Äɽ¾¤Î½èÍý¤Ë¤Ä¤¤¤Æ¤Ï Cinemachine ¤Î Follow ¤ËÄɽ¾ÂоݤòÀßÄꤷ¤Æ¤¤¤ëÁÛÄê¤Ç¤¹¡£
¤Þ¤¿¡¢X ¼´¤Î²ÄÆ°°è¤Ë¤Ä¤¤¤Æ¤â½èÍý¤¬°Û¤Ê¤ê¤Þ¤¹¡£¤³¤ì¤é¤ÎÃͤˤĤ¤¤Æ¤Ï¡¢¼Â¹Ô¤·¤Ê¤¬¤éÄ´À°¤·¤Æ¤¯¤À¤µ¤¤¡£
¡¡¥¹¥¯¥ê¥×¥È¤ÎÆâÍƤϰìÉô°Û¤Ê¤ê¤Þ¤¹¤¬¡¢¥²¡¼¥àÆâ¤Ç¤Î¥×¥ì¥¤¥ä¡¼¤¬¹Ô¤¦¥«¥á¥é¤ÎÁàºîÊýË¡¤ÏƱ¤¸¤Ç¤¹¡£
¡¡¥Þ¥¦¥¹¤Î±¦¥Ü¥¿¥ó¤ò²¡¤·Â³¤±¤ë(¥É¥é¥Ã¥°¤·¤Æ¤¤¤ë)´Ö¡¢¥«¥á¥é¤Î¾å²¼º¸±¦¤Î¸øž²óž¤¬²Äǽ¤Ë¤Ê¤ê¤Þ¤¹¡£
¤Þ¤¿¡¢µ»ö¤ÎÆâÍƤ˲䨤ơ¢¥«¥á¥é¤Î¾å²¼¤Î²ÄÆ°°è(X ¼´¤ËÀ©¸Â)¤òÀߤ±¤Æ¤¤¤Þ¤¹¡£º¸±¦¤Ï 360 ÅÙ²óž²Äǽ¤Ç¤¹¡£
CameraControllerFromCinemachine.cs
<=¡¡¥¯¥ê¥Ã¥¯¤¹¤ë¤È³«¤¤Þ¤¹
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraControllerFromCinemachine : MonoBehaviour
{
[Header("ÄÉÀפ¹¤ë¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È")]
public GameObject targetObj;
[SerializeField]
private float cameraRotateSpeed = 80.0f; // ¥«¥á¥é¤Î²óž®ÅÙ
[SerializeField]
private float maxLimit = 45.0f; // X ¼´Êý¸þ¤ÎºÇÂç²ÄÆ°ÈÏ°Ï
[SerializeField]
private float minLimit = 25.0f; // X ¼´Êý¸þ¤ÎºÇ¾®²ÄÆ°ÈÏ°Ï
void Update() {
if (Input.GetMouseButton(1)) {
// ¥«¥á¥é¤Î²óž
RotateCamera();
}
}
/// <summary>
/// targetObj ¤ò¼´¤Ë¤·¤¿¥«¥á¥é¤Î¸øž²óž
/// </summary>
private void RotateCamera() {
// ¥Þ¥¦¥¹¤ÎÆþÎÏÃͤò¼èÆÀ
float x = Input.GetAxis("Mouse X");
float z = Input.GetAxis("Mouse Y");
// ¥«¥á¥é¤òÄɽ¾Âоݤμþ°Ï¤ò¸øž²óž¤µ¤»¤ë
transform.RotateAround(targetObj.transform.position, Vector3.up, x * Time.deltaTime * cameraRotateSpeed);
//¥«¥á¥é¤Î²óž¾ðÊó¤Î½é´üÃͤò¥»¥Ã¥È
var localAngle = transform.localEulerAngles;
// X ¼´¤Î²óž¾ðÊó¤ò¥»¥Ã¥È
localAngle.x += z;
// X ¼´¤ò²ÔƯÈÏ°ÏÆâ¤Ë¼ý¤Þ¤ë¤è¤¦¤ËÀ©¸æ
if (localAngle.x > maxLimit) {
localAngle.x = maxLimit;
}
if (localAngle.x < minLimit) {
localAngle.x = minLimit;
}
// ¥«¥á¥é¤Î²óž
transform.localEulerAngles = localAngle;
}
}
¡¡¥¹¥¯¥ê¥×¥È¤òºîÀ®¤·¤¿¤é¥»¡¼¥Ö¤·¤Þ¤¹¡£
Virtual Studio ¤Ç¤Ï¥·¥ç¡¼¥È¥«¥Ã¥Èµ¡Ç½¤¬¤¢¤ê¡¢Ctrl + Shift + S ¥¡¼¤ÎƱ»þ²¡¤·¤Ç³«¤¤¤Æ¤¤¤ë¤¹¤Ù¤Æ¤Î¥¹¥¯¥ê¥×¥È¤ò¤Þ¤È¤á¤Æ¥»¡¼¥Ö¤¬¤Ç¤¤Þ¤¹¡£
¡¡¤³¤Î CameraControllerFromCinemachine ¥¹¥¯¥ê¥×¥È¤Ï MainCamera ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤Ï¤Ê¤¯¡¢
CinemachineVirtualCamera ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤ë¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¥¢¥¿¥Ã¥Á¤·¤Æ¤¯¤À¤µ¤¤¡£