代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
public class Fire : MonoBehaviour
{
public Transform _hand;
public Transform Gun;
public Transform ShootP;
public LayerMask groundmask;
public bool isfire=false;
void Start()
{
}
// Update is called once per frame
void Update()
{
if (_hand.childCount > 0)
{
Gun = _hand.GetChild(0);
ShootP = Gun.GetChild(0);
}
else
{
Gun = null;
}
}
public void GunFire(InputAction.CallbackContext context)
{
string tag_str = Gun.tag;
if (context.performed)
{
isfire = true;
switch (tag_str)
{
case "Ak":
Ak_Fire();
break;
case "shotGun":
ShotGun_Fire();
break;
}
}
else if(context.canceled)
{
Debug.Log("No Fire");
isfire = false;
}
}
private void Ak_Fire()
{
Debug.Log("AK开火");
Ray ray = new Ray(ShootP.position,ShootP.forward);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, 5f, groundmask))
{
}
}
private void ShotGun_Fire()
{
Debug.Log("shotGun开火");
for(int i = 1; i < 7; i++)
{
float a = Random.Range(-15f, 15f);//随机生成射击角度
Quaternion rotat = Quaternion.Euler(0f, a, 0f);//绕y轴旋转
Vector3 direction = rotat * transform.forward;
Ray ray = new Ray(ShootP.position, direction);
RaycastHit hit;
if(Physics.Raycast(ray,out hit,5f,groundmask))
{
Debug.Log(i);
}
}
}
}