Passion & UI
This commit is contained in:
@@ -37,7 +37,8 @@ namespace Cielonos.MainGame
|
||||
|
||||
public override void HitCharacter(Collider characterCollider, Vector3 hitPosition)
|
||||
{
|
||||
if (!isEnabling)
|
||||
// 既不在伤害阶段也不在反应窗口,直接跳过
|
||||
if (!isEnabling && !isReactionActive)
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -46,13 +47,31 @@ namespace Cielonos.MainGame
|
||||
|
||||
if (!IsValidTarget(targetCharacter)) return;
|
||||
|
||||
// 已在 grace window 期间成功反应的目标不再处理
|
||||
if (reactedTargets.Contains(targetCharacter.gameObject))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (hitSm.checkedObjects.Contains(targetCharacter.gameObject))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// 仅在反应窗口内(enable 阶段之前或之后),只做反应检测
|
||||
if (!isEnabling && isReactionActive)
|
||||
{
|
||||
HitOnTarget(characterCollider, hitPosition, out Attack.Result graceResult, onlyCheckReaction: true);
|
||||
if (graceResult.isBlocked || graceResult.isDodged)
|
||||
{
|
||||
reactedTargets.Add(targetCharacter.gameObject);
|
||||
hitSm.AddCheckedObject(targetCharacter.gameObject);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// 正常 enable 阶段:造成伤害
|
||||
hitSm.AddCheckedObject(targetCharacter.gameObject);
|
||||
|
||||
HitOnTarget(characterCollider, hitPosition, out _);
|
||||
}
|
||||
|
||||
@@ -81,9 +100,12 @@ namespace Cielonos.MainGame
|
||||
|
||||
public partial class Projectile
|
||||
{
|
||||
protected override void HitOnTarget(Collider hitCollider, Vector3 hitPosition, out Attack.Result result)
|
||||
protected override void HitOnTarget(Collider hitCollider, Vector3 hitPosition, out Attack.Result result,
|
||||
bool onlyCheckReaction = false)
|
||||
{
|
||||
base.HitOnTarget(hitCollider, hitPosition, out result);
|
||||
base.HitOnTarget(hitCollider, hitPosition, out result, onlyCheckReaction);
|
||||
|
||||
if (onlyCheckReaction) return;
|
||||
|
||||
if (!result.isReflected && ++currentPenetrateCount >= maximumPenetrateCount)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user