public static EntityBehaviour Dive(this EntityBehaviour entity, GameObject vanishingPoint, int flatness)
        {
            entity.DequeueController("move");
            entity.DequeueController("float");

            var arc = new ArcMovementController(entity, vanishingPoint, flatness);
            entity.QueueController("move", arc);
            return entity;
        }
Ejemplo n.º 2
0
        public void SpawnPerk(PerkTypes type)
        {
            // outsource into init method
            var perkSpawn = GameObjectRegistry.GetObject("perk_spawn");
            var perkImpact = GameObjectRegistry.GetObject("perk_impact");
            var perkRetreat = GameObjectRegistry.GetObject("perk_retreat");

            var perk = DisplayPerk(type, perkSpawn.transform.position);
            perk.GrimReaperAppeared += (sender, e) => VoidTargetable(perk);
            perk.Speed = 240;

            var arc = new ArcMovementController(perk, perkImpact, 48);
            arc.ControllerFinished += (sender, e) => {
                perk.Speed = 20;
                perk.transform.localRotation = Quaternion.identity;
                perk.MoveTo(perkRetreat.transform.position, false);
                perk.QueueController("impact", new WaterImpactController(Environment.SeaLevel) { Strength = 12, Duration = TimeSpan.FromSeconds(10) });
                symbolManager.RegisterTargetable(perk);
            };
            perk.QueueController("move", arc);

            AdjustSymbolChainRange(perk);

            entities.Add(perk);
        }