FututeWand初步
This commit is contained in:
@@ -137,7 +137,7 @@ namespace Cielonos.MainGame.Inventory.Collections
|
||||
area.hitSm.AddHitSound(AK.EVENTS.FUTUREWAND_MEDIUMATTACKHIT);
|
||||
|
||||
AudioManager.Post(AK.EVENTS.FUTUREWAND_ULTIMATEBEAMPOWERUP, area.gameObject);
|
||||
area.timeSm.AddScheduleAction(() =>
|
||||
area.AddScheduleAction(() =>
|
||||
{
|
||||
AudioManager.Post(AK.EVENTS.FUTUREWAND_ULTIMATEBEAMSHOOT);
|
||||
feedbackSc.PlayFeedback("UltimateBeamShoot");
|
||||
@@ -146,28 +146,28 @@ namespace Cielonos.MainGame.Inventory.Collections
|
||||
|
||||
private void GenerateSpinArea(string vfxName, AttackUnit attackUnit)
|
||||
{
|
||||
AttackUnit upgradedAttackUnit = attackUnit.Clone();
|
||||
float damageMultiplier = 1f + _spinAreaUpgradeCount * 0.25f;
|
||||
upgradedAttackUnit.startDamage *= damageMultiplier;
|
||||
|
||||
vfxData.SpawnMuzzleVFX(vfxName, player, Muzzle);
|
||||
NormalArea area = vfxData.SpawnVFX(vfxName, player).GetComponentInChildren<NormalArea>();
|
||||
AudioManager.Post(AK.EVENTS.FUTUREWAND_GROUNDAREA, area.gameObject);
|
||||
|
||||
area.Initialize<NormalArea>(player, this, Fraction.Enemy)
|
||||
.SetAttackSubmodule<NormalArea>(attackUnit)
|
||||
.SetAttackSubmodule<NormalArea>(upgradedAttackUnit)
|
||||
.SetTimeSubmodule<NormalArea>(int.MaxValue, 0.5f, int.MaxValue, null, Shrink)
|
||||
.SetHitSubmodule<NormalArea>(0.5f, int.MaxValue)
|
||||
.SetHitSubmodule<NormalArea>(0.25f, int.MaxValue)
|
||||
.SetBoomerangMoveSubmodule<NormalArea>(currentTarget, 10f, 0f, 360f, 0f, player.transform.forward)
|
||||
.SetTransformSubmodule<NormalArea>();
|
||||
|
||||
area.SetBoomerangMoveSubmodule(currentTarget, 10f, 360f, player.transform.forward)
|
||||
.WithAutoReturn(float.MaxValue)
|
||||
.WithCatch(1.5f, Shrink)
|
||||
.WithTargeting(true, 25f)
|
||||
.WithKeepFlat(true);
|
||||
|
||||
(area.moveSm as BoomerangMoveSubmodule)!.WithAutoReturn(5f + _spinAreaUpgradeCount * 2.5f).WithCatch(1.5f, Shrink).WithTargeting(true, 25f).WithKeepFlat(true).WithReturnParameters(20f, 10f, float.MaxValue, 0f);
|
||||
area.transformSm.ApplyScaleMove(Vector3.zero, Vector3.one * 3, 0.5f, EaseType.OutQuad);
|
||||
|
||||
area.SetImpulseSubmodule().WithSuction(4f);
|
||||
area.hitSm.AddHitSound(AK.EVENTS.FUTUREWAND_WEAKATTACKHIT);
|
||||
|
||||
int fusionStack = attackUnit.GetSubmodule<AttackUnit.ParameterSubmodule>().GetParameter<int>("Buff_Fusion_Stack");
|
||||
int fusionStack = upgradedAttackUnit.GetSubmodule<AttackUnit.ParameterSubmodule>().GetParameter<int>("Buff_Fusion_Stack");
|
||||
area.hitSm.AddHitEvent((enemy, hitPosition) =>
|
||||
{
|
||||
new Fusion(fusionStack).Apply(enemy);
|
||||
@@ -176,44 +176,39 @@ namespace Cielonos.MainGame.Inventory.Collections
|
||||
|
||||
_activeSpinArea = area;
|
||||
|
||||
/*area.updateAction = () => // 消除敌方投射物
|
||||
{
|
||||
if (area.timeSm.enablingTimer > 3f)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
List<Projectile> toBeRemoved = new List<Projectile>();
|
||||
|
||||
foreach (Projectile projectile in CombatManager.AttackAreaSm.enemyAttackAreas.activeProjectiles)
|
||||
{
|
||||
if (area.areaCollider.IsPointInside(projectile.topParent.transform.position))
|
||||
{
|
||||
toBeRemoved.Add(projectile);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (Projectile projectile in toBeRemoved)
|
||||
{
|
||||
projectile.Explode();
|
||||
}
|
||||
};*/
|
||||
|
||||
|
||||
return;
|
||||
|
||||
void Shrink()
|
||||
{
|
||||
if (_activeSpinArea == area)
|
||||
{
|
||||
_activeSpinArea = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogWarning("Trying to shrink a spin area that is not active.");
|
||||
}
|
||||
|
||||
area.transformSm.Reset().ApplyScaleMove(Vector3.one * 3, Vector3.zero, 0.5f, EaseType.OutQuad);
|
||||
area.timeSm.AddScheduleAction(() => LeanPool.Despawn(area.topParent.gameObject), 0.5f);
|
||||
if(_activeSpinArea == null) return;
|
||||
_activeSpinArea.transformSm.Reset().ApplyScaleMove(Vector3.one * 3, Vector3.zero, 0.5f, EaseType.OutQuad);
|
||||
_activeSpinArea.AddScheduleAction(() => LeanPool.Despawn(area.topParent.gameObject), 0.5f);
|
||||
_activeSpinArea = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*area.updateAction = () => // 消除敌方投射物
|
||||
{
|
||||
if (area.timeSm.enablingTimer > 3f)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
List<Projectile> toBeRemoved = new List<Projectile>();
|
||||
|
||||
foreach (Projectile projectile in CombatManager.AttackAreaSm.enemyAttackAreas.activeProjectiles)
|
||||
{
|
||||
if (area.areaCollider.IsPointInside(projectile.topParent.transform.position))
|
||||
{
|
||||
toBeRemoved.Add(projectile);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (Projectile projectile in toBeRemoved)
|
||||
{
|
||||
projectile.Explode();
|
||||
}
|
||||
};*/
|
||||
Reference in New Issue
Block a user