2.5 update

This commit is contained in:
2026-09-28 11:07:17 +09:00
parent abd2da2057
commit 7978d82196
976 changed files with 111965 additions and 313 deletions
@@ -10,6 +10,8 @@ namespace BumpCombat.Defense
private SpriteRenderer target;
private Sprite[] frames;
private string key;
private float durationScale = 1f;
private bool useUnscaledTime;
private float frameRemaining;
private int frame;
private Sprite[] nextFrames;
@@ -44,8 +46,12 @@ namespace BumpCombat.Defense
bool destroyOnFinish, string followingKey = null,
Sprite[] followingFrames = null, float startDelay = 0f)
{
enabled = true;
completionCallback = null;
finished = false;
animationFinished = false;
durationScale = 1f;
useUnscaledTime = false;
target = renderer;
key = sequenceKey;
frames = sequenceFrames;
@@ -53,6 +59,14 @@ namespace BumpCombat.Defense
nextKey = followingKey;
nextFrames = followingFrames;
delayRemaining = Mathf.Max(0f, startDelay);
travelStartProvider = null;
travelEndProvider = null;
travelCanAdvance = null;
travelArrival = null;
travelDuration = 0f;
travelElapsed = 0f;
travelArrivalInvoked = false;
hideRendererAtArrival = false;
if (target == null || frames == null || frames.Length == 0)
{
FinishSequence();
@@ -61,7 +75,7 @@ namespace BumpCombat.Defense
frame = 0;
target.sprite = frames[frame];
target.enabled = delayRemaining <= 0f;
frameRemaining = DefenseTowerArt.FrameSeconds(key, frame);
frameRemaining = DefenseTowerArt.FrameSeconds(key, frame) * durationScale;
UpdateVisualAlignment();
}
@@ -92,6 +106,18 @@ namespace BumpCombat.Defense
public bool IsFinished => finished;
public void SetPlaybackTiming(float newDurationScale, bool useUnscaledTime)
{
if (float.IsNaN(newDurationScale) || float.IsInfinity(newDurationScale) || newDurationScale <= 0f)
throw new ArgumentOutOfRangeException(nameof(newDurationScale), "Playback duration scale must be positive and finite.");
float previousScale = durationScale;
durationScale = newDurationScale;
this.useUnscaledTime = useUnscaledTime;
if (!finished && frames != null && frames.Length > 0)
frameRemaining *= durationScale / previousScale;
}
public void SetCompletionCallback(System.Action callback)
{
if (callback == null) return;
@@ -141,9 +167,10 @@ namespace BumpCombat.Defense
return;
}
if (travelCanAdvance != null && !travelCanAdvance()) return;
float deltaTime = useUnscaledTime ? Time.unscaledDeltaTime : Time.deltaTime;
if (delayRemaining > 0f)
{
delayRemaining -= Time.deltaTime;
delayRemaining -= deltaTime;
if (delayRemaining > 0f) return;
if (travelDuration > 0f || travelStartProvider != null)
ResolveTravelStart();
@@ -151,7 +178,7 @@ namespace BumpCombat.Defense
}
if (travelDuration > 0f && travelElapsed < travelDuration)
{
travelElapsed += Time.deltaTime;
travelElapsed += deltaTime;
Vector2 currentEnd = travelEndProvider != null
? travelEndProvider() : travelEnd;
transform.position = Vector2.Lerp(
@@ -169,7 +196,7 @@ namespace BumpCombat.Defense
return;
}
frameRemaining -= Time.deltaTime;
frameRemaining -= deltaTime;
while (frameRemaining <= 0f)
{
frame++;
@@ -191,7 +218,7 @@ namespace BumpCombat.Defense
}
target.sprite = frames[frame];
UpdateVisualAlignment();
frameRemaining += DefenseTowerArt.FrameSeconds(key, frame);
frameRemaining += DefenseTowerArt.FrameSeconds(key, frame) * durationScale;
}
}