// Update is called once per frame
 void Update()
 {
     nowEnemyNum = enemysList.Count;
     for (int i = 0; i < enemysList.Count; i++)
     {
         Common.ReactiveTarget rt = enemysList[i].GetComponent <Common.ReactiveTarget>();
         if (rt.isDeath)
         {
             enemysList.RemoveAt(i);
         }
     }
 }
示例#2
0
        //public void ShootWithRay(float d_x,float d_y,float d_z, float o_x,float o_y,float o_z)
        public void ShootWithRay(Vector3 direction, Vector3 origin)
        {
            //Vector3 origin = new Vector3(o_x, o_y, o_z);
            //Vector3 direction = new Vector3(d_x, d_y, d_z);

            Ray        ray = new Ray(origin, direction);
            RaycastHit hit;//射线交叉信息的包装

            //Raycast给引用的变量填充信息
            if (Physics.Raycast(ray, out hit))   //out确保在函数内外是同一个变量
            {
                //hit.point:射线击中的坐标
                GameObject            hitObject = hit.transform.gameObject; //获取射中的对象
                Common.ReactiveTarget target    = hitObject.GetComponent <Common.ReactiveTarget>();
                if (target != null)                                         //检查对象上是否有ReactiveTarget组件
                {
                    target.OnHit(gameObject.name, false, 1);
                }
                else
                {
                    StartCoroutine(SphereIndicator(hit.point));//响应击中
                }
            }
        }