using HTC.UnityPlugin.Vive; using System.Collections; using System.Collections.Generic; using UnityEngine; public class BulletClip : MonoBehaviour { public bool isUsed; public int maxBulletNum; public int nowBulletNum; private GameObject handOff; public GameObject self_; public int Damage; public GameObject bulletHole; public GameObject bulletExplode; //定义弹夹的类型(会被装在什么样的枪上) //1为手枪 //2为冲锋枪 //--------往后依次进行设定--------// public int Type; // Use this for initialization void Start () { isUsed = true; nowBulletNum = maxBulletNum; handOff = GameObject.FindGameObjectWithTag("handOff"); } // Update is called once per frame void Update () { /*if (nowBulletNum<=0 && isUsed) { self_.GetComponent().isKinematic = false; self_.transform.parent = handOff.transform; isUsed = false; }*/ } public void DrawPieces(RaycastHit Hit_loaded) { GameObject Bullet_H = Transform.Instantiate(bulletHole); Bullet_H.transform.position = new Vector3(Hit_loaded.point.x, Hit_loaded.point.y, Hit_loaded.point.z); GameObject Bullet_Par = Transform.Instantiate(bulletExplode); Bullet_Par.transform.position = new Vector3(Hit_loaded.point.x, Hit_loaded.point.y, Hit_loaded.point.z); //Clamp强制取区间的数值,如果不在区间内则取最大/最小值 float angle_x = Mathf.Acos(Mathf.Clamp(Hit_loaded.normal.x, -1f, 1f)) * 180 / Mathf.PI - 90.0f; float angle_y = Mathf.Asin(Mathf.Clamp(Hit_loaded.normal.y, -1f, 1f)) * 180 / Mathf.PI; if (Hit_loaded.normal.z > 0.0f) { angle_x = 180 - angle_x; } //print(new Vector3(angle_y, angle_x, 0.0f)); if (Bullet_H.transform.eulerAngles.y != 0f) { Bullet_H.transform.eulerAngles += new Vector3(-angle_y, angle_x, 0.0f); } else { Bullet_H.transform.eulerAngles += new Vector3(angle_y, angle_x, 0.0f); } Destroy(Bullet_H, 1.0f); Destroy(Bullet_Par, 2.0f); } public GameObject getHandOff() { return handOff; } }