1.向判定效果IInteraction中增强, 支持Hold类型判定, 这将是除Tap以外唯二的判定模式\n2.GameController现在能够打开带有Helper的项目根目录
This commit is contained in:
@@ -138,7 +138,16 @@ namespace Demo.Game
|
||||
return DurationStats.After;
|
||||
}
|
||||
|
||||
public abstract bool JudgementBehaviour(float timePoint);
|
||||
public enum JudgementLevel
|
||||
{
|
||||
None = -2,//No Judge
|
||||
Default = -1,
|
||||
BestLevel = 0,//Level0
|
||||
ScoreLevel = 1,//Level1
|
||||
Bad = 128,
|
||||
}
|
||||
|
||||
public abstract JudgementLevel JudgementBehaviour(float timePoint);
|
||||
|
||||
protected override void UpdateTicks(float currentTime, float deltaTime, TickType tickType)
|
||||
{
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
using Convention;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Demo.Game
|
||||
@@ -9,21 +10,62 @@ namespace Demo.Game
|
||||
return new GameObject().AddComponent<FullScreenInteraction>();
|
||||
}
|
||||
|
||||
public override bool JudgementBehaviour(float timePoint)
|
||||
[Content] public bool IsNeedTap = true;
|
||||
[Content, SerializeField] private bool IsJudgement = false;
|
||||
[Content, SerializeField] private bool IsReleaseJudgementEffect = false;
|
||||
|
||||
/// <summary>
|
||||
/// 设置为Hold模式, 即不需要点按即可判定的模式
|
||||
/// </summary>
|
||||
[ScriptableCall(@"设置为Hold模式, 即不需要点按即可判定的模式")]
|
||||
public void EnableHoldMode()
|
||||
{
|
||||
if (GetRoot().RootGameController.IsAutoPlay)
|
||||
return timePoint > GetBestJudgementTimePoint();
|
||||
var inputs = GetRoot().InputCatch;
|
||||
for (int i = 0, e = inputs.Count; i < e; i++)
|
||||
IsNeedTap = false;
|
||||
}
|
||||
|
||||
protected override void UpdateTicks(float currentTime, float deltaTime, TickType tickType)
|
||||
{
|
||||
base.UpdateTicks(currentTime, deltaTime, tickType);
|
||||
if (tickType == TickType.Pause || tickType == TickType.Reset)
|
||||
{
|
||||
var current = inputs[i];
|
||||
if (IsInInteractiveDuration(current.TimePoint))
|
||||
IsJudgement = false;
|
||||
IsReleaseJudgementEffect = false;
|
||||
}
|
||||
}
|
||||
|
||||
public override JudgementLevel JudgementBehaviour(float timePoint)
|
||||
{
|
||||
var stats = timePoint > GetBestJudgementTimePoint();
|
||||
if (IsJudgement)
|
||||
{
|
||||
if (IsNeedTap)
|
||||
return JudgementLevel.None;
|
||||
else if (stats && IsReleaseJudgementEffect == false)
|
||||
{
|
||||
inputs.RemoveAt(i);
|
||||
return true;
|
||||
IsReleaseJudgementEffect = true;
|
||||
return JudgementLevel.BestLevel;
|
||||
}
|
||||
else
|
||||
return JudgementLevel.None;
|
||||
}
|
||||
if (GetRoot().RootGameController.IsAutoPlay)
|
||||
return stats ? JudgementLevel.BestLevel: JudgementLevel.None;
|
||||
var inputs = GetRoot().InputCatch;
|
||||
var index = inputs.FindIndex(x => IsInInteractiveDuration(x.TimePoint));
|
||||
if (index != -1)
|
||||
{
|
||||
if (IsNeedTap)
|
||||
{
|
||||
inputs.RemoveAt(index);
|
||||
return JudgementLevel.Default;
|
||||
}
|
||||
else
|
||||
{
|
||||
IsJudgement = true;
|
||||
return JudgementLevel.None;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
return JudgementLevel.None;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user