using System.Collections; using System.Collections.Generic; using UnityEngine; using Mirror; public class Shoot : NetworkBehaviour { [SerializeField] GameObject muzzle; [SerializeField] ProcedualAnimationController shootAnim; [SerializeField] float fireRate; [SerializeField] GameObject gunHoldPos; private void Start() { if (isLocalPlayer) { shootAnim.OnSwitchWeapon(fireRate); } } private void Update() { if (isLocalPlayer) { if (Input.GetKeyDown(KeyCode.Mouse0)) { CmdFireBullet(); } } } [Command] // This code will be executed on the server. private void CmdFireBullet() { GameObject dedplayer; RaycastHit hit; shootAnimation(); if (Physics.Raycast(muzzle.transform.position, muzzle.transform.forward, out hit)) { GameObject g = GameObject.CreatePrimitive(PrimitiveType.Sphere); g.transform.position = hit.point; g.transform.localScale = new Vector3(0.1f, 0.1f, 0.1f); if (hit.transform.gameObject.GetComponent() != null) { dedplayer = hit.transform.gameObject; dedplayer.GetComponent().RemoveHealth(20); } } } [Client] // This code will be executed on the Client. void shootAnimation() { shootAnim.Recoil(0.1f); } }