public void Spawn(EnemyPath path, bool boss, float duration) { var p = path == EnemyPath.Left ? _leftPositions : _rightPositions; var enemy = boss ? _bossPool.Spawn() : _minionPool.Spawn(); enemy.transform.rotation = Quaternion.identity; enemy.transform.position = p[0]; enemy.Type = boss ? EnemyType.Boss : EnemyType.Minion; enemy.Path = path; var tweener = new TweenerCore <Vector3, Path, PathOptions> [1]; tweener[0] = enemy.transform.DOPath(p, duration, PathType.CatmullRom).OnUpdate(() => { tweener[0].timeScale = GameTime.Scale; if (enemy.IsDead || !enemy.gameObject.activeSelf) { tweener[0].Kill(); } }).OnComplete(() => { if (boss) { _bossPool.Despawn(enemy); } else { _minionPool.Despawn(enemy); } }); }
public void Initialize(BossPool bossPool, MinionPool minionPool) { _bossPool = bossPool; _minionPool = minionPool; _leftPositions = _leftPositionsRaw.Select(x => x.position).ToArray(); _rightPositions = _rightPositionsRaw.Select(x => x.position).ToArray(); MessageManager.ReceiveEvent <PlayerDamagedEvent>().Subscribe(ev => { if (ev.Source.Type == EnemyType.Boss) { _bossPool.Despawn(ev.Source); } else { _minionPool.Despawn(ev.Source); } }); }