public override void OnEvent(PlayerHitEvent evnt) { if (myPlayer = evnt.targetEntity) { myPlayer.GetComponent <PlayerSubScript>().HealthChange(evnt.damage, evnt.attacker, evnt.attackerEntity); } }
void Handle(PlayerHitEvent e) { constraint.ForEachGameObject((egoComponent, transform, player, animator, jump, movement, onCollisionEnter, sound) => { if (e.playerID == player.playerID) { } }); }
void ProcessWeaponHit(GameObject a_hitObject) { Player hitPlayer = null; //try to find a player component if (!a_hitObject.TryGetComponent <Player>(out hitPlayer)) { hitPlayer = a_hitObject.GetComponentInParent <Player>(); //try to get the component from parent } //if the object hit has a player component, deal damage if (hitPlayer) { float damageToInflict = damagePerBullet; //check for headshot if (a_hitObject.TryGetComponent <Head>(out var playerHead)) { damageToInflict *= headshotMultiplier; GameUI.instance.ActivateHitmarker(GameUI.HitmarkerType.headshot); audioSource.PlayOneShot(headshotSound, 0.25f); } else { GameUI.instance.ActivateHitmarker(GameUI.HitmarkerType.regular); audioSource.PlayOneShot(bodyHitSound, 1f); } //send player hit event var playerHitEvt = PlayerHitEvent.Create(Bolt.GlobalTargets.Everyone, Bolt.ReliabilityModes.ReliableOrdered); playerHitEvt.PlayerHitNum = hitPlayer.playerNum; playerHitEvt.DamageToInflict = damageToInflict; playerHitEvt.Send(); return; } //try to find a health component if (a_hitObject.TryGetComponent <Health>(out var objectHitHealth)) { float damageToInflict = damagePerBullet; //check for headshot if (a_hitObject.TryGetComponent <Head>(out var head)) { damageToInflict *= headshotMultiplier; } objectHitHealth.TakeDamage(damageToInflict); return; } }
private void OnPlayerHit(PlayerHitEvent customEvent) { currentHealth -= customEvent.Damage; if (currentHealth <= 0) { uiManager.UpdateHealth(0); gameManager.LoseGame(); } else { uiManager.UpdateHealth(currentHealth); } }
void PlayerHitCheck() { Physics.Raycast(Spawnpoints.bulletSpawnPoint.position, Spawnpoints.bulletSpawnPoint.forward, out RaycastHit hit); if (hit.collider != null && hit.collider.CompareTag("FPSPlayer")) { var evnt = PlayerHitEvent.Create(); evnt.attacker = attacker.text; evnt.targetEntity = hit.collider.gameObject.GetComponent <BoltEntity>(); evnt.damage = Random.Range(30, 35); evnt.attackerEntity = myEntity; evnt.Send(); } }
/// <summary> /// Handles collisions between shells and Players and the Arena. /// Shells are destroyed on impact, playerHits are reported cia event call if enabled. /// </summary> /// <param name="callEvent">Whether should the player hits trigger PlayerHitEvent.</param> public void ResolveShellCollisions(double dt, bool callEvent) { var a = World.Arena; var toBeRemoved = new List <int>(); void RemoveShell(int index) => toBeRemoved.Add(index); bool NotOwner(TankShell shell, Player p) => p.ID != shell.OwnerPID; for (int i = 0; i < World.shells.Count; ++i) { var shell = World.shells[i]; //Collisions with the players bool removed = false; foreach (var p in World.players.Values) { if (ResolveSphereAABBCollsion(p.Position.Xy, Player.radius, shell.position, TankShell.boundingBox).LengthSquared > 0.0 && NotOwner(shell, p)) //Ignore self-collisions { if (callEvent) { PlayerHitEvent?.Invoke(p, shell); } RemoveShell(i); removed = true; break; } } if (removed) { continue; } //Collisions with the arena foreach (var cellCenter in GetSurroundingWallCellsCenters(CalcCellCoords(shell.position, a), a)) { if (ShellAABBCollisionCheck(shell.position, cellCenter, Arena.boundingBox)) { RemoveShell(i); break; } } } toBeRemoved.Sort(); for (int i = toBeRemoved.Count - 1; i >= 0; --i) { World.shells.RemoveAt(toBeRemoved[i]); } }
void CheckIfPlayerWasHit() { var asteroids = this.DataCenter.GetEntitiesWithTag("Asteroid"); var player = this.DataCenter.GetEntitiesWithTag("Player")[0]; var playerShape = player.GetData <ShapeData> (); var playerSpatial = player.GetData <SpatialData> (); var hit = false; foreach (var asteroid in asteroids) { if (hit) { break; } var asteroidSpatial = asteroid.GetData <SpatialData> (); var asteroidShape = asteroid.GetData <ShapeData> (); foreach (var point in asteroidShape.Points) { var actualPoint = (point * asteroidShape.Size) + new Vector2(asteroidSpatial.X, asteroidSpatial.Y); if (playerShape.Contains(playerSpatial, actualPoint)) { var asteroidMass = asteroid.GetData <MassData> ().Mass; var e = new PlayerHitEvent(asteroidMass); this.eventManager.PublishEvent(this, e); hit = true; break; } } } }
void Handle(PlayerHitEvent e) { constraint.ForEachGameObject((egoComponent, transform, player) => { transform.position = player.initialPosition; }); }
/// <summary> /// Event handler for player hit event. /// </summary> /// <param name="sender">Event sender.</param> /// <param name="e">Event args.</param> void OnPlayerHit(object sender, PlayerHitEvent e) { Console.Write("Player hit by: " + e); this.Restart(); }