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#
35 lines
1.1 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
} |