2.5d test

This commit is contained in:
2026-09-27 21:08:05 +09:00
parent 84dd12414a
commit abd2da2057
201 changed files with 24297 additions and 295 deletions
+39 -16
View File
@@ -1,5 +1,6 @@
using System.Collections.Generic;
using BumpCombat.Constants;
using BumpCombat.Defense;
using BumpCombat.Player;
using UnityEngine;
@@ -25,6 +26,8 @@ namespace BumpCombat.Enemies
private float necrofireRayLength;
private bool meleeAttackActive;
private bool meleeHitConfirmed;
private bool defenseSummonHitConfirmed;
private bool checkingDefenseSummonGeometry;
private StageEnemyEffectVisual necrofireRayVisual;
private readonly List<StageEnemyEffectVisual> stageAoeVisuals = new();
private readonly List<AttackWarningVisual> stageMultiWarnings = new();
@@ -202,6 +205,7 @@ namespace BumpCombat.Enemies
attackOrigin = transform.position;
meleeAttackActive = false;
meleeHitConfirmed = false;
defenseSummonHitConfirmed = false;
if (IsLancerAttack)
{
EnsureLancerVisual();
@@ -440,6 +444,7 @@ namespace BumpCombat.Enemies
public void TickActive(float activeElapsed)
{
TryApplyDefenseSummonHit(activeElapsed);
if (necrofireRayActive)
{
TickNecrofireRay();
@@ -495,6 +500,7 @@ namespace BumpCombat.Enemies
necrofireRayHitConfirmed = false;
meleeAttackActive = false;
meleeHitConfirmed = false;
defenseSummonHitConfirmed = false;
if (necrofireRayVisual != null)
{
Destroy(necrofireRayVisual.gameObject);
@@ -796,6 +802,28 @@ namespace BumpCombat.Enemies
|| controller.AttackShape == EnemyAttackShape.Cone;
}
private void TryApplyDefenseSummonHit(float activeElapsed)
{
if (defenseSummonHitConfirmed || !controller.CurrentAttackPattern.IsContactWindowActive(activeElapsed, controller.ActiveDuration)) return;
DefenseSummonUnit target = controller.DefenseCombatTarget;
if (target == null || target.BodyCollider == null) return;
bool hit;
if (controller.AttackShape == EnemyAttackShape.Body)
{
ColliderDistance2D distance = controller.BodyCollider.Distance(target.BodyCollider);
hit = distance.isOverlapped || distance.distance <= 0.03f;
}
else
{
checkingDefenseSummonGeometry = true;
hit = ContainsPoint(target.BodyCollider.bounds.center);
checkingDefenseSummonGeometry = false;
}
if (!hit) return;
Vector2 direction = (Vector2)target.transform.position - (Vector2)transform.position;
if (direction.sqrMagnitude <= 0.0001f) direction = lockedDirection;
defenseSummonHitConfirmed = target.TryTakeDamage(controller.AttackDamage, direction.normalized);
}
private void TryApplyMeleeHit(float activeElapsed)
{
if (!meleeAttackActive || meleeHitConfirmed)
@@ -943,31 +971,26 @@ namespace BumpCombat.Enemies
private bool ContainsPlayerCollider(Collider2D[] hits)
{
Collider2D playerCollider = GetPlayerCollider();
if (playerCollider == null || hits == null)
{
return false;
}
Collider2D targetCollider = GetPlayerCollider();
if (targetCollider == null || hits == null) return false;
for (int i = 0; i < hits.Length; i++)
{
if (hits[i] == playerCollider
|| hits[i].GetComponentInParent<PlayerHealth>() == playerHealth)
{
return true;
}
if (hits[i] == targetCollider) return true;
if (!checkingDefenseSummonGeometry
&& hits[i].GetComponentInParent<PlayerHealth>() == playerHealth) return true;
}
return false;
}
private Collider2D GetPlayerCollider()
{
return playerHealth != null
? playerHealth.GetComponent<Collider2D>()
: null;
if (checkingDefenseSummonGeometry)
{
DefenseSummonUnit target = controller != null ? controller.DefenseCombatTarget : null;
return target != null ? target.BodyCollider : null;
}
return playerHealth != null ? playerHealth.GetComponent<Collider2D>() : null;
}
private void TickNecrofireRay()
{
if (!necrofireRayActive || necrofireRayHitConfirmed)