Пример #1
0
 /// <summary>
 /// Indításkor adjon neki élettartamot, és törölje a hasonló power upokat, különben egymást pörgetik.
 /// </summary>
 void Start()
 {
     if (Instance != null)
     {
         Destroy(Instance.gameObject);
     }
     Instance    = this;
     ScoreBefore = Game.Score;
     gameObject.AddComponent <DespawnTime>().Timer = Duration;
 }
Пример #2
0
        /// <summary>
        /// Találatkor hívódik meg.
        /// </summary>
        /// <param name="Score">Elvágó játékos pontszáma</param>
        public void Hit(ref int Score)
        {
            if (GotHit || !Body)
            {
                return;
            }
            GotHit = true; // Ha ez nincs, rengetegszer meghívódna a függvény
            if (name.StartsWith("Menu"))
            {
                Game.SelectedMenuItem = Convert.ToInt32(name.Substring(4)); // A kiválasztott menüelem száma a névben van
            }
            if (Game.Playing)                                               // Csak játék közben módosítson statisztikákat, mert a Game Over menüvel nem tűnnek el -> nem bug, feature
            {
                Dispenser.ObjectDespawned();
                Game.SinceLastCombo = 0;
                Game.ThisCombo++;
                Game.LastHit = transform.position;
                if (Type == Types.Grenade)
                {
                    ((GameObject)Instantiate(Game.Instance.Explosion, transform.position, transform.rotation)).transform.localScale *= Game.Instance.Scale * .1f; // Nagyobb robbanás effekt
                    foreach (Rigidbody EachBody in FindObjectsOfType(typeof(Rigidbody)))                                                                          // Lökjön el mindent magától
                    {
                        if (EachBody != Body)
                        {
                            Destroy(EachBody.gameObject.GetComponent <Target>());
                            EachBody.gameObject.AddComponent <DespawnTime>();
                            Dispenser.ObjectDespawned();
                        }
                        EachBody.AddExplosionForce(Game.Instance.Scale * 50, transform.position, Game.Instance.Scale + Game.Instance.Scale);
                    }
                    Game.LoseLife = true;
                    if (Game.GameMode == GameModes.Multiplayer) // Többjátékos módban pontlevonás is jár a gránátért
                    {
                        Score -= 25;
                    }
                    Game.ThisCombo = 0;
                }
                else
                {
                    Score++;
                }
                // Ha power up vágódott el, aktiválódjon
                if (PowerUp != PowerUps.None)
                {
                    switch (PowerUp)
                    {
                    case PowerUps.DoubleScore: PwrDoubleScore.Activate(); break;

                    case PowerUps.Itemstorm: PwrItemstorm.Activate(); break;

                    case PowerUps.SlowMotion: PwrSlowMotion.Activate(transform.position); break;
                    }
                }
            }
            Vector3 ParentVelocity = Body.velocity;

            foreach (GameObject Shrapnel in Shrapnels)   // Essen szét darabokra
            {
                Shrapnel.transform.parent = null;
                Shrapnel.AddComponent <Despawner>();
                Rigidbody ChildBody = Shrapnel.AddComponent <Rigidbody>();
                ChildBody.AddForce(ParentVelocity);
                ChildBody.AddTorque(new Vector3(Random.value * 100, Random.value * 100, Random.value * 100));
                ChildBody.AddExplosionForce(Game.Instance.Scale * 6, transform.position, 10);
            }
            ((GameObject)Instantiate(Game.Instance.Explosion, transform.position, transform.rotation)).transform.localScale *= Game.Instance.Scale * .02f; // Robbanás effekt
            SingleShotAudio.Play(Game.Instance.SliceSounds[Random.Range(0, Game.Instance.SliceSounds.Length)], transform.position);                        // Vágás hangja
            Destroy(gameObject);
        }