Пример #1
0
    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;
    }