public override void OnEvent(CreateSplash createSplash) { var splash = Instantiate(splashEffect, createSplash.Position, Quaternion.identity); Destroy(splash, 2f); var hits = Physics.SphereCastAll(createSplash.Position, createSplash.Radius, Vector3.one); foreach (var hit in hits) { var player = hit.transform.GetComponent <Player>(); if (player == null) { continue; } if (player.entity.HasControl) { var playerHit = PlayerHit.Create(GlobalTargets.OnlyServer, ReliabilityModes.ReliableOrdered); playerHit.Damage = createSplash.Damage; playerHit.Target = player.entity; playerHit.WeaponName = "Sponge"; playerHit.PlayerWhoShot = createSplash.PlayerWhoShot.GetState <IPlayer>().Username; playerHit.Send(); break; } } }
private void FixedUpdate() { if (_grounded || !_launch) { return; } if (transform.position.y <= 0) { _grounded = true; var t = transform.position; t.y = 0.2f; transform.position = t; } var groundRay = new Ray(transform.position, _groundCheck); if (!Physics.Raycast(groundRay, out _, 0.25f, 9)) { return; } _grounded = true; var spawnSponge = SpawnSponge.Create(GlobalTargets.OnlyServer, ReliabilityModes.ReliableOrdered); spawnSponge.Position = transform.position; spawnSponge.Type = "Weapon-Sponge"; spawnSponge.Send(); var createSplash = CreateSplash.Create(GlobalTargets.Everyone, ReliabilityModes.ReliableOrdered); createSplash.Position = transform.position; createSplash.Radius = player.weaponSystem.spongeWeaponState.weapon.Radius; createSplash.Damage = player.weaponSystem.spongeWeaponState.weapon.Damage; createSplash.PlayerWhoShot = player.entity; createSplash.Send(); var destroySpongeOnHit = DestroySpongeOnHit.Create(GlobalTargets.Everyone, ReliabilityModes.ReliableOrdered); destroySpongeOnHit.SpongeId = guid; destroySpongeOnHit.Send(); }