47 lines
1.8 KiB
C#
47 lines
1.8 KiB
C#
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;
|
||
}
|
||
}
|
||
} |