Files
zeling_v2/Assets/_Game/Scripts/Feedback/WeaponFeedback.cs
Joywayer b7baf7ad6a Add WeaponFeedback component and AddressableManagerWindow meta file
- Implemented WeaponFeedback class for handling weapon-related feedbacks such as hit effects and attack sounds.
- Added meta file for AddressableManagerWindow to manage addressable assets.
- Included a new jump.data file for profiler data.
2026-05-22 22:03:32 +08:00

65 lines
2.5 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using UnityEngine;
using MoreMountains.Feedbacks;
namespace BaseGames.Feedback
{
/// <summary>
/// 武器反馈组件,挂载在武器 HitBox Prefab 根节点上。
/// 实现 IFeedbackPlayer专注于武器本地反馈命中粒子、击打音效、破风等
/// 角色级别的全局反馈(震屏、手柄振动)仍由 PlayerFeedback 负责。
/// </summary>
public class WeaponFeedback : MonoBehaviour, IFeedbackPlayer
{
[Header("命中反馈")]
[SerializeField] private MMF_Player _onHitLight;
[SerializeField] private MMF_Player _onHitMedium;
[SerializeField] private MMF_Player _onHitHeavy;
[Header("攻击破风")]
[SerializeField] private MMF_Player _onAttackWhoosh;
[Header("通用命名预设")]
[SerializeField] private NamedFeedbackPreset[] _namedPresets;
[System.Serializable]
private struct NamedFeedbackPreset
{
public string presetId;
public MMF_Player player;
}
// ── IFeedbackPlayer 实现 ──────────────────────────────────────────────
public void PlayHit(HitWeight weight)
{
var player = weight switch
{
HitWeight.Light => _onHitLight,
HitWeight.Heavy => _onHitHeavy,
_ => _onHitMedium,
};
player?.PlayFeedbacks();
}
public void PlayAttackWhoosh() => _onAttackWhoosh?.PlayFeedbacks();
public void TriggerPreset(string presetId)
{
if (_namedPresets == null) return;
foreach (var p in _namedPresets)
if (p.presetId == presetId) { p.player?.PlayFeedbacks(); return; }
}
// ── 武器上不适用的反馈,空实现 ────────────────────────────────────────
public void PlayParrySuccess() { }
public void PlayTakeHit() { }
public void PlayDeath() { }
public void PlayHeal() { }
public void PlayLandImpact() { }
public void PlayJumpLaunch() { }
public void PlayFootstep() { }
public void PlaySFXById(string sfxId) { }
public void PlayFormSwitch(int formIndex){ }
}
}