Files
Cielonos/Assets/Scripts/MainGame/Base/FunctionalAnimation/Payloads/PlaySoundFX.cs

48 lines
1.8 KiB
C#
Raw Normal View History

2025-12-23 19:47:06 -05:00
using System;
2026-05-23 08:27:50 -04:00
using Cielonos.MainGame.Inventory;
2026-02-13 09:22:11 -05:00
using Sirenix.OdinInspector;
2025-12-08 05:27:53 -05:00
using SLSUtilities.FunctionalAnimation;
2026-02-13 09:22:11 -05:00
using SLSUtilities.WwiseAssistance;
2025-12-08 05:27:53 -05:00
using UnityEngine;
namespace Cielonos.MainGame.FunctionalAnimation
{
2025-12-23 19:47:06 -05:00
[Serializable]
2025-12-08 05:27:53 -05:00
public class PlaySoundFX : FuncAnimPayloadBase
{
2026-02-13 09:22:11 -05:00
[WwiseEvent]
public uint soundID = AkUnitySoundEngine.AK_INVALID_PLAYING_ID;
[Tooltip("是否显示高级设置")]
public bool advancedSettings = false;
[ShowIf("advancedSettings")] public bool attachToBodyPart = false;
[ShowIf("@advancedSettings && attachToBodyPart")] public bool attachToMainBodyPart = true;
[ShowIf("@advancedSettings && attachToMainBodyPart")] public ViewObjectData.AttachBodyPartType mainBodyPart;
[ShowIf("@advancedSettings && !attachToMainBodyPart")] public string customBodyPart;
[ShowIf("advancedSettings")] public Vector3 positionOffset = Vector3.zero;
2025-12-08 05:27:53 -05:00
public override void Invoke()
{
2026-05-10 11:47:55 -04:00
if (mute) return;
2026-02-13 09:22:11 -05:00
if (!advancedSettings)
{
AudioManager.Post(soundID, character.centerPosition);
}
else
{
Vector3 postPosition = character.centerPosition;
if (attachToBodyPart)
{
Transform part = attachToMainBodyPart ?
character.bodyPartsSc.GetPart(mainBodyPart) :
character.bodyPartsSc.GetPart(customBodyPart);
postPosition = part != null ? part.position : character.centerPosition;
}
Vector3 finalPosition = postPosition + positionOffset;
AudioManager.Post(soundID, finalPosition);
}
2025-12-08 05:27:53 -05:00
}
}
}