2
0
Fork 0
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

35 lines
1.1 KiB
C#

2 years ago
using System;
using UnityEngine;
using UnityEngine.Playables;
using UnityEngine.Timeline;
public class ThrowPositionMixerBehaviour : PlayableBehaviour
{
public override void ProcessFrame(Playable playable, FrameData info, object playerData)
{
var trackBinding = playerData as GameObject;
if (!trackBinding)
return;
var trans = trackBinding.transform;
var inputCount = playable.GetInputCount();
for (var i = 0; i < inputCount; i++)
{
var inputPlayable = (ScriptPlayable<ThrowPositionBehaviour>)playable.GetInput(i);
var input = inputPlayable.GetBehaviour();
var positionTimeClipTime = inputPlayable.GetTime();
var positionTimeClipTimeMax = inputPlayable.GetDuration();
if (positionTimeClipTime > 0 && positionTimeClipTime + 0.01f < positionTimeClipTimeMax)
{
var rate = positionTimeClipTime / positionTimeClipTimeMax;
var pos = Vector3.Lerp(input.startPos, input.endPos, (float)rate);
trans.localPosition = pos;
}
}
}
}