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("RootMotionMoveXMultiplier", 1); float my = runtimeFuncAnim.runtimeVariables.GetVariable("RootMotionMoveZMultiplier", 1); float mz = runtimeFuncAnim.runtimeVariables.GetVariable("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; } } }