Skip to content

Instantly share code, notes, and snippets.

@todorok1
Created January 2, 2025 07:34
Show Gist options
  • Save todorok1/a7e816e6422e3bb27a3c373ddf644a01 to your computer and use it in GitHub Desktop.
Save todorok1/a7e816e6422e3bb27a3c373ddf644a01 to your computer and use it in GitHub Desktop.
シンプルRPGチュートリアル第7回 操作キャラクターにカメラを追従させるクラス
using UnityEngine;
namespace SimpleRpg
{
/// <summary>
/// カメラを対象のキャラクターに追従させる処理を行うクラスです。
/// </summary>
public class CameraMover : MonoBehaviour
{
/// <summary>
/// 追従対象のゲームオブジェクトへの参照です。
/// </summary>
GameObject _targetObj;
/// <summary>
/// 追従しているかどうかのフラグです。
/// </summary>
bool _isTracing;
void Start()
{
CheckReferences();
StartTrace();
}
/// <summary>
/// 必要な参照を確認します。
/// </summary>
void CheckReferences()
{
if (_targetObj == null)
{
_targetObj = GameObject.FindWithTag(ObjectTagSettings.Player);
}
}
/// <summary>
/// カメラの追従を開始します。
/// </summary>
public void StartTrace()
{
_isTracing = true;
}
/// <summary>
/// カメラの追従を停止します。
/// </summary>
public void StopTrace()
{
_isTracing = false;
}
void LateUpdate()
{
MoveCamera();
}
/// <summary>
/// カメラを移動させる処理です。
/// </summary>
void MoveCamera()
{
// 追跡中フラグがfalseなら処理を抜けます。
if (!_isTracing)
{
return;
}
// 対象キャラクターへの参照がnullなら抜けます。
if (_targetObj == null)
{
return;
}
// 対象キャラクターの位置までカメラを移動させます。この際、Z軸の位置は変更しません。
var cameraPos = _targetObj.transform.position;
cameraPos.z = gameObject.transform.position.z;
gameObject.transform.position = cameraPos;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment