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(); }
/// <summary> /// Gets called whenever a sponge needs to be instantiated over the network. /// </summary> /// <param name="spawnSponge"></param> public override void OnEvent(SpawnSponge spawnSponge) { BoltNetwork.Instantiate(BoltPrefabs.Sponge_Weapon_Pickup, spawnSponge.Position, Quaternion.identity); }