AI补足注释(已经快看不懂了)
实现i18n 优化部分模块的逻辑以优化性能 修复物品展示框打开时按下ESC唤出暂停菜单但没有暂停的bug Signed-off-by: Eicy <im@crash.work>
This commit is contained in:
@@ -3,78 +3,99 @@ using UnityEngine;
|
||||
|
||||
namespace Camera
|
||||
{
|
||||
// 处理相机的震动效果
|
||||
public class CameraShake : MonoBehaviour
|
||||
{
|
||||
public Transform cameraTransform;
|
||||
public float amplitude = 0.05f;
|
||||
public float frequency = 10.0f;
|
||||
[Header("Camera Settings")]
|
||||
[Tooltip("相机抖动的Transform。")]
|
||||
public Transform cameraTransform; // 相机的变换组件
|
||||
|
||||
private Vector3 _originalPos;
|
||||
private bool _isRunning;
|
||||
private bool _isWalking;
|
||||
[Header("抖动参数")]
|
||||
[Tooltip("抖动效果的振幅。")]
|
||||
public float amplitude = 0.05f; // 震动幅度
|
||||
[Tooltip("抖动效果的频率。")]
|
||||
public float frequency = 10.0f; // 震动频率
|
||||
|
||||
private Vector3 _originalPos; // 相机的初始位置
|
||||
private bool _isRunning; // 玩家是否在奔跑
|
||||
private bool _isWalking; // 玩家是否在行走
|
||||
|
||||
private void Start()
|
||||
{
|
||||
// 存储相机的初始位置
|
||||
_originalPos = cameraTransform.localPosition;
|
||||
}
|
||||
|
||||
private void OnEnable()
|
||||
{
|
||||
EventManager.Instance.PlayerRunning += OnPlayerRunning;
|
||||
EventManager.Instance.PlayerRunStop += StopRunning;
|
||||
EventManager.Instance.PlayerWalking += OnPlayerWalking;
|
||||
EventManager.Instance.PlayerWalkStop += StopWalking;
|
||||
// 订阅事件
|
||||
EventManager.Instance.PlayerRunning += OnPlayerRunning; // 玩家开始奔跑事件
|
||||
EventManager.Instance.PlayerRunStop += StopRunning; // 玩家停止奔跑事件
|
||||
EventManager.Instance.PlayerWalking += OnPlayerWalking; // 玩家开始行走事件
|
||||
EventManager.Instance.PlayerWalkStop += StopWalking; // 玩家停止行走事件
|
||||
}
|
||||
|
||||
private void OnDisable()
|
||||
{
|
||||
// 取消订阅事件
|
||||
EventManager.Instance.PlayerRunning -= OnPlayerRunning;
|
||||
EventManager.Instance.PlayerRunStop -= StopRunning;
|
||||
EventManager.Instance.PlayerWalking -= OnPlayerWalking;
|
||||
EventManager.Instance.PlayerWalkStop -= StopWalking;
|
||||
}
|
||||
|
||||
// 玩家开始奔跑时调用
|
||||
private void OnPlayerRunning()
|
||||
{
|
||||
_isRunning = true;
|
||||
_isRunning = true; // 设置奔跑状态
|
||||
}
|
||||
|
||||
// 玩家开始行走时调用
|
||||
private void OnPlayerWalking()
|
||||
{
|
||||
_isWalking = true;
|
||||
_isWalking = true; // 设置行走状态
|
||||
}
|
||||
|
||||
// 停止奔跑时调用
|
||||
private void StopRunning()
|
||||
{
|
||||
_isRunning = false;
|
||||
_isRunning = false; // 重置奔跑状态
|
||||
}
|
||||
|
||||
// 停止行走时调用
|
||||
private void StopWalking()
|
||||
{
|
||||
_isWalking = false;
|
||||
_isWalking = false; // 重置行走状态
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
// 处理相机震动效果
|
||||
if (_isRunning)
|
||||
{
|
||||
var xShake = Mathf.Sin(Time.time * frequency) * amplitude;
|
||||
var yShake = Mathf.Cos(Time.time * frequency * 2) * amplitude * 0.5f;
|
||||
|
||||
cameraTransform.localPosition = _originalPos + new Vector3(xShake, yShake, 0);
|
||||
// 计算奔跑状态下的震动
|
||||
ApplyShake(frequency, amplitude);
|
||||
}
|
||||
else if (_isWalking)
|
||||
{
|
||||
// 计算行走状态下的震动
|
||||
ApplyShake(frequency / 2, amplitude);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (_isWalking)
|
||||
{
|
||||
var xShake = Mathf.Sin(Time.time * frequency / 2) * amplitude;
|
||||
var yShake = Mathf.Cos(Time.time * frequency / 2 * 2) * amplitude * 0.5f;
|
||||
|
||||
cameraTransform.localPosition = _originalPos + new Vector3(xShake, yShake, 0);
|
||||
}
|
||||
else
|
||||
cameraTransform.localPosition = _originalPos;
|
||||
// 恢复相机到初始位置
|
||||
cameraTransform.localPosition = _originalPos;
|
||||
}
|
||||
}
|
||||
|
||||
// 应用相机震动效果
|
||||
private void ApplyShake(float shakeFrequency, float shakeAmplitude)
|
||||
{
|
||||
var xShake = Mathf.Sin(Time.time * shakeFrequency) * shakeAmplitude; // X轴震动
|
||||
var yShake = Mathf.Cos(Time.time * shakeFrequency * 2) * shakeAmplitude * 0.5f; // Y轴震动
|
||||
|
||||
// 更新相机位置
|
||||
cameraTransform.localPosition = _originalPos + new Vector3(xShake, yShake, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user