private void spriterComponent_OnAnimationChanged(SaNi.Spriter.Data.SpriterAnimation old, SaNi.Spriter.Data.SpriterAnimation newAnim) { // attack keskeytettiin, niin tyhennetään callback jottai ei lyödä seuraavaa vihua vitullisilla callbackeilla if (old.Name == "Attack") { spriterComponent.OnAnimationFinished -= spriterComponent_OnAnimationFinished; } }
private void component_OnAnimationFinished(SaNi.Spriter.Data.SpriterAnimation animation) { component.Disable(); component.Hide(); component.Destroy(); this.Disable(); this.Hide(); this.Destroy(); }
private void spriterComponent_OnAnimationFinished(SaNi.Spriter.Data.SpriterAnimation animation) { spriterComponent.OnAnimationFinished -= spriterComponent_OnAnimationFinished; if (animation.Name != "Attack") { return; } GameObject target = Owner.FirstComponentOfType <TargetingComponent>().Target; spriterComponent.ChangeAnimation("Idle"); // ei ole targettia if (target == null) { return; } // TODO siirrä johonkin komponenttiin kun on tarpeeksi abseja HealthComponent healthComponent = target.FirstComponentOfType <HealthComponent>(); // Targettia vastaan ei voi hyökätä. if (healthComponent == null) { return; } WeaponComponent weaponComponent = Owner.FirstComponentOfType <WeaponComponent>(); StatSet statSet = Owner.FirstComponentOfType <StatSet>(); bool isCrit = false; float damage = weaponComponent.GenerateAttack(statSet.GetAttackPower(), statSet.GetCritPercent(), ref isCrit); r.AddText(((int)damage).ToString(), isCrit); healthComponent.TakeDamage(damage); SpriterEffect effect = new SpriterEffect(Owner, @"Animations/Splatters"); effect.Initialize(); effect.SpriterComponent.Position = target.Position + new Vector2(24f, -38f); if (target.ContainsTag("boss")) { effect.SpriterComponent.Scale = 2.5f; } effect.SpriterComponent.FlipX = Owner.FirstComponentOfType <FacingComponent>().FacingNumber < 0f; effect.SpriterComponent.ChangeAnimation("blood_ribon_0"); Owner.AddComponent(effect); }