// 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); } } }
//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));//响应击中 } } }