diff --git a/Assets/Live2D/Cubism/Framework/Motion/CubismMotionLayer.cs b/Assets/Live2D/Cubism/Framework/Motion/CubismMotionLayer.cs index e33dd319..af428d47 100644 --- a/Assets/Live2D/Cubism/Framework/Motion/CubismMotionLayer.cs +++ b/Assets/Live2D/Cubism/Framework/Motion/CubismMotionLayer.cs @@ -340,8 +340,14 @@ public void SetStateSpeed(int index, float speed) } var playingMotionData = _playingMotions[index]; + var previousSpeed = playingMotionData.Speed; playingMotionData.Speed = speed; - playingMotionData.EndTime = (playingMotionData.EndTime - Time.time) / speed; + + if (playingMotionData.EndTime >= 0.0f && previousSpeed > 0.0f) + { + playingMotionData.EndTime = Time.time + (playingMotionData.EndTime - Time.time) * previousSpeed / speed; + } + _playingMotions[index] = playingMotionData; _motionState.ClipMixer.SetSpeed(speed);