@@ -1,10 +1,11 @@
|
||||
using UnityEngine;
|
||||
|
||||
// World Space Canvas をプレイヤーの真正面に移動させ、開いている間はプレイヤーの視点に滑らかに追従させるスクリプト
|
||||
public class VRUIDoorFaceFollow : MonoBehaviour
|
||||
{
|
||||
[SerializeField] private Transform vrCameraTransform;
|
||||
|
||||
//配置・追従のパラメータ
|
||||
[Header("配置・追従のパラメータ")]
|
||||
[SerializeField] private float forwardDistance = 0.5f;
|
||||
[SerializeField] private float heightOffset = -0.1f;
|
||||
[SerializeField] private float followSpeed = 5.0f;
|
||||
@@ -21,15 +22,15 @@ public class VRUIDoorFaceFollow : MonoBehaviour
|
||||
}
|
||||
}
|
||||
|
||||
// Time.timeScale = 0 の間でも動作させるため、カメラ移動の後に実行される LateUpdate を使用
|
||||
// 全体の時間が止まっている(Time.timeScale = 0)間でも動作させるため、カメラ移動の後に実行される LateUpdate を使用します
|
||||
private void LateUpdate()
|
||||
{
|
||||
if (vrCameraTransform == null) return;
|
||||
|
||||
// UI画面が有効化された最初のフレームの処理
|
||||
// このオブジェクト(UI画面)が有効化された「最初のフレーム」の処理
|
||||
if (!wasActiveLastFrame)
|
||||
{
|
||||
// 開いた瞬間は、プレイヤーの今の向きの完全な正面に瞬間移動させる(遅れてついてくるのを防ぐため)
|
||||
// 開いた瞬間は、プレイヤーの今の向きの「完全な正面」に瞬間移動させる(遅れてついてくるのを防ぐため)
|
||||
SetInitialPosition();
|
||||
wasActiveLastFrame = true;
|
||||
return;
|
||||
@@ -45,7 +46,7 @@ public class VRUIDoorFaceFollow : MonoBehaviour
|
||||
wasActiveLastFrame = false;
|
||||
}
|
||||
|
||||
// 画面が開いた瞬間に、プレイヤーの正面の正しい位置・向きに強制配置する
|
||||
/// 画面が開いた瞬間に、プレイヤーの正面の正しい位置・向きに強制配置する
|
||||
private void SetInitialPosition()
|
||||
{
|
||||
// カメラの位置から、カメラが向いている正面方向に一定距離進んだ座標を計算
|
||||
@@ -60,7 +61,7 @@ public class VRUIDoorFaceFollow : MonoBehaviour
|
||||
transform.Rotate(0, 180, 0);
|
||||
}
|
||||
|
||||
// プレイヤーが首を動かしたり移動したりした際、画面を滑らかについてこさせる
|
||||
/// プレイヤーが首を動かしたり移動したりした際、画面を滑らかについてこさせる
|
||||
private void SmoothFollowPlayer()
|
||||
{
|
||||
// 目的地(目標座標)の計算
|
||||
|
||||
Reference in New Issue
Block a user