概要
Quaternion.LookRotationでプレイヤーが対象物を向く角度を得て、Quaternion.Lerpで回転運動の補間をしています。
Qiita用 : キャラクターへスムーズにカメラを向ける#Unity #Qiita pic.twitter.com/BSTBPagYNZ
— kazuma (@kazuma_f) February 19, 2021
コードの内容
using UnityEngine;
public class LookAtGameObject : MonoBehaviour
{
public Transform[] position;
int targetNumber = 0;
float rotatePosition = 0f;
float rotateSpeed = 0.1f;
Vector3 direction;
private void Update() {
if (Input.GetMouseButtonDown(0)) {
targetNumber++;
if (targetNumber >= position.Length) targetNumber = 0;
direction = position[targetNumber].position - transform.position;
rotatePosition = 0f;
}
if (rotatePosition < 1f) {
rotatePosition += rotateSpeed * Time.deltaTime;
transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.LookRotation(direction), rotatePosition);
}
}
}
設定
MainCameraをPlayerに持たせます。(MainCameraのTransform各種を0にしてください)
LookAtGameObjectをPlayerに貼り付けてInspector内のpositionにカメラを向けたいオブジェクトをドラッグアンドドロップします。
実行
画面をクリックするたびにカメラが対象を次々映し続けます