mirror of
				https://github.com/DerTyp7/defrain-shooter-unity.git
				synced 2025-11-03 22:58:59 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			62 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
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<Player>() != null)
 | 
						|
            {
 | 
						|
                dedplayer = hit.transform.gameObject;
 | 
						|
                dedplayer.GetComponent<Player>().RemoveHealth(20);
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
    [Client]
 | 
						|
    // This code will be executed on the Client.
 | 
						|
    void shootAnimation()
 | 
						|
    {
 | 
						|
        shootAnim.Recoil(0.1f);
 | 
						|
    }
 | 
						|
}
 |