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

47 lines
1.8 KiB
C#
Raw Normal View History

2026-05-10 11:47:55 -04:00
using System;
using Cielonos.MainGame.Characters;
using Sirenix.OdinInspector;
using UnityEngine;
namespace Cielonos.MainGame.FunctionalAnimation
{
[Serializable]
public class SetRootMotionMultipliers : FuncAnimPayloadBase
{
[InfoBox("注意此Payload参与对RootMotion的修改和其它修改来源混用时需注意。")]
[Tooltip("是否设定倍数如果不设定则恢复为默认值1")]
public bool isSet;
[ShowIf("isSet")]
[Tooltip("是否从VariableCollection里获取倍数")]
public bool getMultiplierFromVariableCollection;
[HideIf("@isSet == false || getMultiplierFromVariableCollection == true")]
[Tooltip("自定义倍数")]
public Vector3 customMultiplier = Vector3.one;
public override void Invoke()
{
Vector3 multiplier = Vector3.one;
if (isSet)
{
if (getMultiplierFromVariableCollection)
{
float mx = runtimeFuncAnim.runtimeVariables.GetVariable<float>("RootMotionMoveXMultiplier", 1);
float my = runtimeFuncAnim.runtimeVariables.GetVariable<float>("RootMotionMoveZMultiplier", 1);
float mz = runtimeFuncAnim.runtimeVariables.GetVariable<float>("RootMotionMoveYMultiplier", 1);
multiplier = new Vector3(mx, my, mz);
}
else
{
multiplier = customMultiplier;
}
}
character.movementSc.rootMotionMoveXMultiplier = multiplier.x;
character.movementSc.rootMotionMoveYMultiplier = multiplier.y;
character.movementSc.rootMotionMoveZMultiplier = multiplier.z;
}
}
}