update
This commit is contained in:
@@ -140,7 +140,7 @@ namespace Ichni.RhythmGame
|
||||
{
|
||||
if (inputUnitSwipe.isGeneric)
|
||||
{
|
||||
Debug.Log($"输入方向 {inputUnitSwipe.swipeDirection} 是通用的,直接匹配成功。");
|
||||
//Debug.Log($"输入方向 {inputUnitSwipe.swipeDirection} 是通用的,直接匹配成功。");
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -79,7 +79,7 @@ namespace Ichni.RhythmGame
|
||||
|
||||
noteAudioSubmodule.PlayHoldStartAudio();
|
||||
|
||||
Debug.Log($"Hold Note Start Judge: {startJudgeType} at {triggerTime}");
|
||||
//Debug.Log($"Hold Note Start Judge: {startJudgeType} at {triggerTime}");
|
||||
}
|
||||
|
||||
public void ExecuteProcessJudge()
|
||||
@@ -89,6 +89,19 @@ namespace Ichni.RhythmGame
|
||||
|
||||
public void ExecuteFinalJudge()
|
||||
{
|
||||
foreach (EffectBase effect in noteVisual.effectSubmodule.effectCollection["StartHold"])
|
||||
{
|
||||
if (effect.nowEffectState == EffectBase.EffectState.Middle)
|
||||
{
|
||||
effect.Adjust();
|
||||
}
|
||||
}
|
||||
|
||||
foreach (EffectBase effect in noteVisual.effectSubmodule.effectCollection["Holding"])
|
||||
{
|
||||
effect.Adjust();
|
||||
}
|
||||
|
||||
float triggerTime = GameManager.instance.songTime;
|
||||
postTimeDifference = holdEndTime - triggerTime;
|
||||
|
||||
@@ -105,7 +118,7 @@ namespace Ichni.RhythmGame
|
||||
postJudgeType = NoteJudgeType.Bad;
|
||||
}
|
||||
|
||||
Debug.Log($"Hold Note Final Judge: {postJudgeType} at {triggerTime} of difference {postTimeDifference}");
|
||||
//Debug.Log($"Hold Note Final Judge: {postJudgeType} at {triggerTime} of difference {postTimeDifference}");
|
||||
|
||||
NoteJudgeType finalJudge = GetLowerType(preJudgeType, postJudgeType);
|
||||
float finalTimeDifference = Mathf.Min(preTimeDifference, postTimeDifference);
|
||||
@@ -168,6 +181,24 @@ namespace Ichni.RhythmGame
|
||||
GameManager.instance.noteJudgeManager.checkingHoldList.Remove(this);
|
||||
}
|
||||
}
|
||||
|
||||
public override void SetPerfectPosition()
|
||||
{
|
||||
if (isOnTrack && track.trackTimeSubmodule is TrackTimeSubmoduleMovable movable)
|
||||
{
|
||||
holdingTime = holdEndTime - exactJudgeTime;
|
||||
(noteVisual as INoteVisualHold)?.UpdateHoldInMovableTrack();
|
||||
}
|
||||
}
|
||||
|
||||
protected override void SlowOffsetAfterExactJudgeTime()
|
||||
{
|
||||
if (isOnTrack && track.trackTimeSubmodule is TrackTimeSubmoduleMovable movable)
|
||||
{
|
||||
holdingTime = GameManager.instance.songTime - exactJudgeTime;
|
||||
(noteVisual as INoteVisualHold)?.UpdateHoldInMovableTrack();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public partial class Hold
|
||||
@@ -270,6 +301,11 @@ namespace Ichni.RhythmGame
|
||||
|
||||
SetJudgeArea();
|
||||
|
||||
if (!isFirstJudged && exactJudgeTime < GameManager.instance.songTime)
|
||||
{
|
||||
SlowOffsetAfterExactJudgeTime();
|
||||
}
|
||||
|
||||
foreach (EffectBase e in noteVisual.effectSubmodule.effectCollection["Generate"])
|
||||
{
|
||||
e.UpdateEffect(exactJudgeTime);
|
||||
@@ -297,6 +333,12 @@ namespace Ichni.RhythmGame
|
||||
{
|
||||
isHolding = false;
|
||||
isFinalJudged = true;
|
||||
|
||||
foreach (EffectBase e in noteVisual.effectSubmodule.effectCollection["StartHold"])
|
||||
{
|
||||
e.Disrupt();
|
||||
}
|
||||
|
||||
ExecuteFinalJudge();
|
||||
RemoveFromCheckingList();
|
||||
}
|
||||
|
||||
@@ -129,6 +129,11 @@ namespace Ichni.RhythmGame
|
||||
e.UpdateEffect(exactJudgeTime);
|
||||
}
|
||||
|
||||
if (!isFirstJudged && exactJudgeTime < GameManager.instance.songTime)
|
||||
{
|
||||
SlowOffsetAfterExactJudgeTime();
|
||||
}
|
||||
|
||||
if (!isFirstJudged && GameManager.instance.songTime > exactJudgeTime + judgeIntervals.afterMiss)
|
||||
{
|
||||
Miss(exactJudgeTime + judgeIntervals.afterMiss);
|
||||
@@ -177,7 +182,23 @@ namespace Ichni.RhythmGame
|
||||
Observable.EveryUpdate().Subscribe(_ =>
|
||||
{
|
||||
noteVisual.effectSubmodule.effectCollection["GeneralJudge"].ForEach(e => e.UpdateEffect(triggerTime));
|
||||
noteVisual.effectSubmodule.effectCollection["Perfect"].ForEach(e => e.UpdateEffect(triggerTime));
|
||||
|
||||
foreach (var e in noteVisual.effectSubmodule.effectCollection["Perfect"])
|
||||
{
|
||||
if (!e.IsPost)
|
||||
{
|
||||
e.UpdateEffect(triggerTime);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var e in noteVisual.effectSubmodule.effectCollection["Perfect"])
|
||||
{
|
||||
if (e.IsPost)
|
||||
{
|
||||
e.UpdateEffect(triggerTime);
|
||||
}
|
||||
}
|
||||
|
||||
noteVisual.effectSubmodule.effectCollection["AfterJudge"].ForEach(e => e.UpdateEffect(exactJudgeTime));
|
||||
}).AddTo(gameObject);
|
||||
|
||||
@@ -328,7 +349,7 @@ namespace Ichni.RhythmGame
|
||||
}
|
||||
}
|
||||
|
||||
public void SetPerfectPosition()
|
||||
public virtual void SetPerfectPosition()
|
||||
{
|
||||
if (isOnTrack && track.trackTimeSubmodule is TrackTimeSubmoduleMovable movable)
|
||||
{
|
||||
@@ -336,6 +357,30 @@ namespace Ichni.RhythmGame
|
||||
trackPositioner.SetPercent(notePercent);
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual void SlowOffsetAfterExactJudgeTime()
|
||||
{
|
||||
if (isOnTrack && track.trackTimeSubmodule is TrackTimeSubmoduleMovable movable)
|
||||
{
|
||||
float slowedTime = (GameManager.instance.songTime - exactJudgeTime) * 0.8f;
|
||||
float notePercent = movable.GetTrackPercent(exactJudgeTime + slowedTime);
|
||||
trackPositioner.SetPercent(notePercent);
|
||||
}
|
||||
}
|
||||
|
||||
/*public virtual void SlowOffsetAfterExactJudgeTime()
|
||||
{
|
||||
if (isOnTrack && track.trackTimeSubmodule is TrackTimeSubmoduleMovable movable)
|
||||
{
|
||||
float timeDifference = GameManager.instance.songTime - exactJudgeTime;
|
||||
float percent = Mathf.Lerp(0f, 1f, timeDifference / (judgeIntervals.afterMiss + 0.2f));
|
||||
float slowedTime = (GameManager.instance.songTime - exactJudgeTime) * percent;
|
||||
//float percent = Mathf.Lerp(0, 0.5f, timeDifference / judgeIntervals.afterMiss);
|
||||
//float slowedTime = (GameManager.instance.songTime - exactJudgeTime) * 0.5f;
|
||||
float notePercent = movable.GetTrackPercent(exactJudgeTime + slowedTime);
|
||||
trackPositioner.SetPercent(notePercent);
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
public abstract partial class NoteBase
|
||||
|
||||
Reference in New Issue
Block a user