void OnJumpEnd() { jumping--; Unit player = BoardManager.instance.player; player.renderer.enabled = true; player.followable.isFollow = true; for (LinkedListNode <Unit> i = player.followable.Followers.First; i != null; i = i.Next) { i.Value.cachedTransform.localScale = Vector3.one; i.Value.cachedTransform.position = player.cachedTransform.position; } Transform shadowTransform = player.shadow.transform; shadowTransform.localScale = Vector3.one; shadowTransform.SetParent(player.cachedTransform); player.shadow.enabled = true; player.rigid.velocity = Vector2.zero; player.collider.enabled = true; player.autoMoveable.enabled = true; player.attackable.enabled = true; player.targetable.IsTargetable = true; for (int i = 0; i < 20; i++) { DeathEffect effect = DeathEffectManager.instance.pool.DequeueObjectPool().GetComponent <DeathEffect>(); effect.Init((Vector2)player.cachedTransform.position + Random.insideUnitCircle * 0.25f, player.cachedTransform.position, 1.5f); //effect.cachedTransform.position = (Vector2)player.cachedTransform.position + Random.insideUnitCircle.normalized * 1.3f; } }
public IEnumerator Respawn() { if (deathEffect == null) { Add(deathEffect = new DeathEffect(color)); image.Visible = false; yield return(deathEffect.Duration + 0.1f); respawnEase = 1f; Tween respawnTween = Tween.Create(Tween.TweenMode.Oneshot, null, 0.6f, true); respawnTween.OnUpdate = delegate(Tween t) { respawnEase = 1f - t.Eased; }; respawnTween.OnComplete = delegate { respawnEase = -1f; deathEffect = null; image.Visible = true; Vector2 normalScale = scale; Add(Wiggler.Create(0.25f, 4f, (f) => scale = normalScale * new Vector2(1, f * 0.15f + 1f), true, true)); }; Add(respawnTween); OnRespawn?.Invoke(this); } }
public override void Render() { base.Render(); if (respawnEase >= 0) { DeathEffect.Draw(Position - level.ShakeVector * 6, color, respawnEase); } }
private IEnumerator DeathRoutine() { Level level = SceneAs <Level>(); if (bounce != Vector2.Zero) { scale = 1.5f; playAudio("event:/char/madeline/predeath", Position); Celeste.Freeze(0.05f); yield return(null); Vector2 from = Position; Vector2 to = from + bounce * 24f; Tween tween = Tween.Create(Tween.TweenMode.Oneshot, Ease.CubeOut, 0.5f, start: true); Add(tween); tween.OnUpdate = delegate(Tween t) { Position = from + (to - from) * t.Eased; scale = 1.5f - t.Eased * 0.5f; sprite.Rotation = (float)(Math.Floor(t.Eased * 4f) * 6.2831854820251465); }; yield return(tween.Duration * 0.75f); tween.Stop(); } Position += Vector2.UnitY * -5f; level.Displacement.AddBurst(Position, 0.3f, 0f, 80f); level.Shake(); Input.Rumble(RumbleStrength.Strong, RumbleLength.Long); playAudio(HasGolden ? "event:/new_content/char/madeline/death_golden" : "event:/char/madeline/death", Position); deathEffect = new DeathEffect(initialHairColor, Center - Position); deathEffect.OnUpdate = delegate(float f) { light.Alpha = 1f - f; }; Add(deathEffect); yield return(deathEffect.Duration * 0.65f); if (ActionDelay > 0f) { yield return(ActionDelay); } End(); }
public void Die() { if (!dying) { deathEffect = new DeathEffect(Position); dying = true; CollisionHandler = new EmptyCollisionHandler(this); SoundFactory.Instance.sfxEnemyDeath.Play(); LootManagement.Instance.enemyDeathLootCheck(game.currentRoom, this); } }
public override void Death() { base.Death(); if (DeathEffect) { DeathEffect.SetActive(true); DeathEffect.transform.parent = null; Destroy(DeathEffect, 1.5f); } Destroy(gameObject); }
public BlueKeese(Game1 game, Vector2 position) { spawnEffect = new ExplosionEffect(position); deathEffect = new DeathEffect(position); OverlayColor = Color.White; Texture = NPCSpriteFactory.Instance.textureEnemies; Position = position; CollisionHandler = new EnemyCollisionHandler(game, this, size.X, size.Y, 2, 2); this.player = game.player; this.game = game; }
public BladeTrap(Game1 game, Vector2 position) { spawnEffect = new ExplosionEffect(position); deathEffect = new DeathEffect(position); OverlayColor = Color.White; Texture = NPCSpriteFactory.Instance.textureEnemies; Position = position; CollisionHandler = new EnemyCollisionHandler(game, this, size.X, size.Y, 0, 0); this.player = game.player; this.game = game; originalPositionX = spritePositionX; originalPositionY = spritePositionY; }
public void ApplyDamage(float damage) { if (damage > armorValue) { hitPoints -= (damage - armorValue); } DeathEffect deathEffect = GetComponent <DeathEffect>(); if (deathEffect != null && hitPoints <= 0.0f) { deathEffect.Die(); } }
// public List<GameObject> _players; void Awake() { //get components _animator = GetComponentInChildren <Animator>(); _controller = GetComponent <CharacterController2D>(); _deathEffect = GetComponent <DeathEffect>(); _level = GameObject.FindGameObjectWithTag("Level").GetComponent <Level>(); // _players = new List<GameObject>(GameObject.FindGameObjectsWithTag("Player")); // listen to some events for illustration purposes _controller.onControllerCollidedEvent += onControllerCollider; _controller.onTriggerEnterEvent += onTriggerEnterEvent; _controller.onTriggerExitEvent += onTriggerExitEvent; }
public override void OnCollision(GameObject other, Vec2 position) { if (other is Projectile) { var proj = other as Projectile; if (!proj.PendingDispose) { GameWorld.AddGameObject(AnimationFactory.Create(position, "LaserExplosion")); Hp -= proj.Definition.Damage; if (Hp <= 0) { Hp = 0; LivesRemaining--; if (LivesRemaining < 0) { LivesRemaining = 0; } if (Active) { DeathEffect.Play(); AnimationFactory.Create(RigidBody.GetPosition(), "AlienExplosion"); } Active = false; } } } else if (other is Health) { var health = other as Health; Hp += health.Hp; if (Hp >= MaxHp) { Hp = MaxHp; } HealthEffect.Play(); } else if (other is Laser) { WeaponEffect.Play(); var laser = other as Laser; WeaponInventory.AddToInventory(laser); } }
public DeathEffect requestDeathEffect(Element use) { DeathEffect r = deArray[curDe++]; if (curDe == MAX_DEATH_EFFECT) { curDe = 0; } r.Color = use.uiSprite.color; r.transform.parent = use.transform; r.transform.localPosition = Vector3.zero; r.gameObject.SetActive(false); r.gameObject.SetActive(true); return(r); }
public void Play(Unit unit) { //StartCoroutine(PlayCorou(trans)); int rnd = Random.Range(3, 6); for (int i = 0; i < rnd; i++) { Vector2 offset = new Vector2(Random.Range(-0.25f, 0.25f), Random.Range(-0.25f, 0.25f)); DeathEffect ef = pool.DequeueObjectPool().GetComponent <DeathEffect>(); //if (i == 0) // ef.animator.SetBool("isSmall", false); //else // ef.animator.SetBool("isSmall", true); ef.Init(unit.cachedTransform.position + (Vector3)offset, unit.cachedTransform.position, 0.3f, unit); //yield return new WaitForSeconds(0.1f); } }
// Удаление всех игровых сущностей с поля private void RemoveAllCreatures() { // Удаляем все астероиды с игрового поля for (int i = 0; i < _activeAsteroidList.Count; ++i) { // Отписываемся от события смерти астероида и уничтожаем его _activeAsteroidList[i].OnKilled -= OnEnemyKilledHandler; DeathEffect de = _activeAsteroidList[i].GetComponent <DeathEffect>(); if (de != null) { de.Enable(false); } Destroy(_activeAsteroidList[i].gameObject); } _activeAsteroidList.Clear(); // Удаляем все летающие тарелки (и оставшихся противников, если так случилось) Enemy[] lastEnemies = FindObjectsOfType <Enemy>(); for (int i = 0; i < lastEnemies.Length; ++i) { // Отписываемся от события смерти сущности и уничтожаем её lastEnemies[i].OnKilled -= OnEnemyKilledHandler; DeathEffect de = lastEnemies[i].GetComponent <DeathEffect>(); if (de != null) { de.Enable(false); } Destroy(lastEnemies[i].gameObject); } // Удаляем персонажа с игрового поля if (_activePlayer != null) { DeathEffect de = _activePlayer.GetComponent <DeathEffect>(); if (de != null) { de.Enable(false); } Destroy(_activePlayer.gameObject); _activePlayer = null; } }
// Update is called once per frame public void Spawn(GameObject dying, Vector3 speed) { GameObject chosen = null; foreach (GameObject effect in Effects) { if (effect.activeSelf == false) { chosen = effect; break; } } if (chosen != null) { DeathEffect d = chosen.GetComponent <DeathEffect>(); chosen.SetActive(true); chosen.transform.position = dying.transform.position; Rigidbody2D rb = dying.GetComponent <Rigidbody2D>(); rb.AddForce(speed * 250); rb.drag = 4; d.Enable(dying); } }
internal void AddDeathEffectToDamageManager(DeathEffect deathEffect) { damageManager.stuffThatHappensInTheFinalExplosion.Add(deathEffect); }
public void DelayedKill(float duration) { DeathEffect deathEffect = new DeathEffect(duration); AddEffect(deathEffect); }