本文整理汇总了C#中Stats.ConsumeEnergy方法的典型用法代码示例。如果您正苦于以下问题:C# Stats.ConsumeEnergy方法的具体用法?C# Stats.ConsumeEnergy怎么用?C# Stats.ConsumeEnergy使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Stats
的用法示例。
在下文中一共展示了Stats.ConsumeEnergy方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ChargeCoroutine
private IEnumerator ChargeCoroutine(Transform SpellOrb, Transform Caster, Stats casterStats, Action action)
{
float startTime = Time.realtimeSinceStartup;
AnimInfo.Activated = true;
casterStats.EnergyRegenPause = true;
SpellFX newFx = OnActivateFX[0].StartSpell(SpellOrb);
GrowingOrbAnimation goa = newFx.GetComponent<GrowingOrbAnimation>();
goa.GrowingBallParent = this;
//foreach(SpellFX fx in OnActivateFX)
// fx.StartSpell(SpellOrb);
StartCoroutine(ChargeAnimationInfoCoroutine(startTime));
// If not enough energy for the full cast
float negativeEnergy = casterStats.ConsumeEnergy(ActivationCost);
if (negativeEnergy > 0)
AnimInfo.NegativeEnergyCast = true;
float dt = 0;
float charge = 0;
// Wait till button is released
while (action.IsDown() || AnimInfo.NegativeEnergyCast)
{
dt = Time.realtimeSinceStartup - startTime;
if (dt > StartupTime)
{
AnimInfo.State = AnimationInfo.AnimState.Overcharging;
// reduce energy
}
yield return null;
}
AnimInfo.InputReleased = true;
dt = Time.realtimeSinceStartup - startTime;
// Wait atleast till startupTime
if (dt < StartupTime)
yield return new WaitForSeconds(StartupTime - dt);
// Dt and charge calculation
if (AnimInfo.State == AnimationInfo.AnimState.Overcharging)
charge = AnimInfo.AnimStateProgress;
// Gather Direction
Vector3 dir = SpellOrb.position - Caster.position;
dir.Normalize();
// Consume energy and launch
casterStats.ConsumeEnergy(FullChargeCost * charge);
Bullet bullet = Bullet.Launch(SpellOrb.position, dir, Mathf.Lerp(MinDamage, MaxDamage, charge));
float scale = minSize + (maxSize-minSize)*charge;
bullet.transform.localScale = new Vector3(scale, scale, scale);
AnimInfo.State = AnimationInfo.AnimState.Cooldown;
coolDownStarted = Time.realtimeSinceStartup;
casterStats.EnergyRegenPause = false;
// Replace by Cooldown Animation Handler
yield return new WaitForSeconds(CooldownTime);
resetAnimationInfo();
}