开镜开火,在屏幕中心发射射线,写一个方法Aim(),按下B键,开镜,按C关闭。
private bool isAim = false;//设置一个bool值,默认为false
private GameObject[] aim;//建立一个集合,用来放瞄准镜
void Aim()
{
if (Input.GetKeyDown(KeyCode.B))
{
isAim = true;
aim[0].SetActive(true);
aim[1].SetActive(true);//按B,将true赋给isAim;开镜
}
if (Input.GetKeyDown(KeyCode.C))
{
isAim = false;
aim[0].SetActive(false);
aim[1].SetActive(false);//按C,将isAim赋给false,关镜
}
}
void Fire()
{
if (Input.GetButtonDown(GameResources.fire)&&GameManagers.GetIntance().playershotnum>0)//拿到键盘和弹夹子弹数量
{
p = PlayerState.Fire;//赋值,播放动画
AudioSource.PlayClipAtPoint(fireClip, Camera.main.transform.position, 1);//播放声音
if (isAim)//判断值是否正确
{
Ray ray = Camera.main.ScreenPointToRay(new Vector3(Screen.width * 0.5f, Screen.height * 0.5f, 0));//在屏幕中心发射射线,使用摄像机去拿坐标
RaycastHit hit;
if (Physics.Raycast(ray, out hit, 100))
{
GameObject go = Instantiate(fire, pos.position, transform.rotation);
Destroy(go, 0.2f);
GameObject holeobj = Instantiate(hole, hit.point, Quaternion.identity);
holeobj.transform.LookAt(hit.point - hit.normal);//射线和法线平行
holeobj.transform.Translate(Vector3.back * 0.03f);//弹痕往外移
Destroy(holeobj, 2);//两秒后消失
GameManagers.GetIntance().playershotnum -= 1;
// OperationGun();
}
}
else
{
RaycastHit hit;
if (Physics.Raycast(pos.position, pos.forward, out hit, 100))
{
GameObject go = Instantiate(fire, pos.position, transform.rotation);
Destroy(go, 0.2f);
GameObject holeobj = Instantiate(hole, hit.point, Quaternion.identity);
holeobj.transform.LookAt(hit.point - hit.normal);//射线和法线平行
holeobj.transform.Translate(Vector3.back * 0.03f);//弹痕往外移
Destroy(holeobj, 2);//两秒后消失
GameManagers.GetIntance().playershotnum -= 1;
//OperationGun();
}
}
}
}
围着玩家为圆克隆敌人
private Transform player;
private GameObject dog;
IEnumerator Clone()//协程
{
yield return new WaitForSeconds(5f);//等待5秒后进行
for (int i = 0; i < 3; i++)
{
int a = Random.Range(2,10);//随机值
Vector2 b = Random.insideUnitCircle;//拿到球形值
Vector3 c = b.normalized;//法线
Vector3 d = new Vector3(player.position.x + c.x * a, player.position.y, player.position.z + c.y * a);//敌人的克隆位置
Instantiate(dog, d, player.rotation);//克隆
}
}