/// <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; }
/// <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); }