private void Shoot() { deltaTime += Time.deltaTime; if (spaceshipScript == null || !spaceshipScript.CanShoot() || deltaTime < shootFrequency || vicViper == null) { return; } // 当前对象发射点到vicViper的向量 Vector3 bv = vicViper.transform.position - spaceshipScript.GetBarrel().transform.position; Vector3 direction = Vector3.zero; // 非倒置 在世界坐标系第四象限时固定为向右 if (!IsInvert() && bv.y < 0 && bv.x >= 0) { direction = Vector3.right; }//非倒置 在世界坐标系第三象限时固定为向左 else if (!IsInvert() && bv.y < 0 && bv.x < 0) { direction = Vector3.left; }// 倒置 在世界坐标系第二象限时固定为向右 else if (IsInvert() && bv.y >= 0 && bv.x <= 0) { direction = Vector3.right; }// 倒置 在世界坐标系第一象限时固定为向右 else if (IsInvert() && bv.y >= 0 && bv.x > 0) { direction = Vector3.left; } else { direction = bv; } spaceshipScript.Shoot(direction, ShootPosition.Barrel, Quaternion.identity); // 重置计时 deltaTime = 0; }