Files
defrain-shooter-unity/Assets/Scripts/Weapons/Shoot.cs
2021-11-11 20:26:03 +01:00

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);
}
}