void Update()
    {
        // 如果队长被消灭,状态变为ATTACK
        if (enemyStatus.GetIsAttack())
        {
            // ----------------------------------------------------------------
            // 回避
            // ----------------------------------------------------------------

            // 获取玩家的方向
            Vector3    playerPosition   = player.transform.position;
            Vector3    relativePosition = playerPosition - transform.position;
            Quaternion targetRotation   = Quaternion.LookRotation(relativePosition);

            // 获取按指定速度从敌机现在的方向朝玩家的反方向倾斜后的角度
            float targetRotationAngle  = targetRotation.eulerAngles.y - 180;
            float currentRotationAngle = transform.eulerAngles.y;
            currentRotationAngle = Mathf.LerpAngle(
                currentRotationAngle,
                targetRotationAngle,
                turnSpeed * Time.deltaTime);
            Quaternion tiltedRotation = Quaternion.Euler(0, currentRotationAngle, 0);

            // 改变敌机的角度
            transform.rotation = tiltedRotation;

            // 使敌机前进
            transform.Translate(new Vector3(0f, 0f, speed * Time.deltaTime));

            // 叠加战斗空间的滚动方向
            transform.position -= battleSpaceContoller.GetAdditionPos();
        }
    }
예제 #2
0
    void Update()
    {
        // 叠加销毁前的运动
        if (isMoving)
        {
            transform.Translate(transform.forward * speed * Time.deltaTime);
            // 慢慢减缓速度
            if (speed > 0)
            {
                speed -= 0.1f;
            }
        }

        // 叠加战斗空间的滚动方向
        transform.position -= battleSpaceContoller.GetAdditionPos();

        // 统计播放结束的特效
        for (int i = 0; i < effects.Length; i++)
        {
            if (!effects[i].isPlaying)
            {
                endOfPlayingCount++;
            }
        }

        // 所有播放结束后,销毁对象
        if (endOfPlayingCount >= playingCount)
        {
            Destroy(this.gameObject);
        }
    }
예제 #3
0
    void Update()
    {
        // 破壊前の動きを加算.
        if (isMoving)
        {
            transform.Translate(transform.forward * speed * Time.deltaTime);
            // 徐々にスピードを減衰.
            if (speed > 0)
            {
                speed -= 0.1f;
            }
        }

        // 戦闘空間のスクロール方向を加える.
        transform.position -= battleSpaceContoller.GetAdditionPos();

        // 再生終了したエフェクトをカウント.
        for (int i = 0; i < effects.Length; i++)
        {
            if (!effects[i].isPlaying)
            {
                endOfPlayingCount++;
            }
        }

        // 全て再生が終了した場合、オブジェクトを破棄する.
        if (endOfPlayingCount >= playingCount)
        {
            Destroy(this.gameObject);
        }
    }
예제 #4
0
    void Update()
    {
        if (enemyStatus.GetIsAttack())
        {
            // プレイヤーの方向を取得.
            Vector3    playerPosition   = player.transform.position;
            Vector3    relativePosition = playerPosition - transform.position;
            Quaternion targetRotation   = Quaternion.LookRotation(relativePosition);

            // 敵機の現在の方向からプレイヤーの方向へ、指定したスピードで傾けた後の角度を取得.
            float targetRotationAngle;
            targetRotationAngle = targetRotation.eulerAngles.y;
            float currentRotationAngle = transform.eulerAngles.y;
            currentRotationAngle = Mathf.LerpAngle(
                currentRotationAngle,
                targetRotationAngle,
                turnSpeed * Time.deltaTime);
            Quaternion tiltedRotation = Quaternion.Euler(0, currentRotationAngle, 0);

            // 敵機の角度を変更.
            transform.rotation = tiltedRotation;

            // 敵機を進める.
            transform.Translate(new Vector3(0f, 0f, speed * Time.deltaTime));

            // 戦闘空間のスクロール方向を加える.
            transform.position -= battleSpaceContoller.GetAdditionPos();

            // 弾の発射確認.
            if (canShoot)
            {
                IsFireDistance();
            }
        }
    }
예제 #5
0
    void Update()
    {
        // リーダーが破壊されると、ステータスはATTACKになる.
        if (enemyStatus.GetIsAttack())
        {
            // ----------------------------------------------------------------
            // 回避する.
            // ----------------------------------------------------------------

            // プレイヤーの方向を取得.
            Vector3    playerPosition   = player.transform.position;
            Vector3    relativePosition = playerPosition - transform.position;
            Quaternion targetRotation   = Quaternion.LookRotation(relativePosition);

            // 敵機の現在の方向からプレイヤーと逆の方向へ、指定したスピードで傾けた後の角度を取得.
            float targetRotationAngle  = targetRotation.eulerAngles.y - 180;
            float currentRotationAngle = transform.eulerAngles.y;
            currentRotationAngle = Mathf.LerpAngle(
                currentRotationAngle,
                targetRotationAngle,
                turnSpeed * Time.deltaTime);
            Quaternion tiltedRotation = Quaternion.Euler(0, currentRotationAngle, 0);

            // 敵機の角度を変更.
            transform.rotation = tiltedRotation;

            // 敵機を進める.
            transform.Translate(new Vector3(0f, 0f, speed * Time.deltaTime));

            // 戦闘空間のスクロール方向を加える.
            transform.position -= battleSpaceContoller.GetAdditionPos();
        }
    }
    // ------------------------------------------------------------------------
    // 使炮弹前进
    // ------------------------------------------------------------------------
    private void ForwardBullet()
    {
        // 炮弹前进
        transform.Translate(new Vector3(0f, 0f, bulletSpeed * Time.deltaTime));

        // 叠加战斗空间的滚动方向
        transform.position -= battleSpaceContoller.GetAdditionPos();
    }
예제 #7
0
    // ------------------------------------------------------------------------
    // 弾を前進させる.
    // ------------------------------------------------------------------------
    private void ForwardBullet()
    {
        // 弾を進める.
        transform.Translate(new Vector3(0f, 0f, bulletSpeed * Time.deltaTime));

        // 戦闘空間のスクロール方向を加える.
        transform.position -= battleSpaceContoller.GetAdditionPos();
    }
    void Update()
    {
        if (enemyStatus.GetIsAttack())
        {
            // 发射炮弹
            Shoot();

            // 使敌机前进
            transform.Translate(new Vector3(0f, 0f, speed * Time.deltaTime));

            // 叠加战斗空间的滚动方向
            transform.position -= battleSpaceContoller.GetAdditionPos();
        }
    }
예제 #9
0
    void Update()
    {
        if (enemyStatus.GetIsAttack())
        {
            // 弾を撃つ.
            Shoot();

            // 敵機を進める.
            transform.Translate(new Vector3(0f, 0f, speed * Time.deltaTime));

            // 戦闘空間のスクロール方向を加える.
            transform.position -= battleSpaceContoller.GetAdditionPos();
        }
    }
    // ------------------------------------------------------------------------
    // 使激光前进
    // ------------------------------------------------------------------------
    private void ForwardBullet()
    {
        // 只有敌机存在时执行处理
        if (target)
        {
            // 激光前进
            transform.Translate(new Vector3(0f, 0f, bulletSpeed * Time.deltaTime));

            // 叠加战斗空间的滚动方向
            transform.position -= battleSpaceContoller.GetAdditionPos();

            // 激光延伸
            if (transform.localScale.z < laserSize)
            {
                transform.localScale = new Vector3(
                    transform.localScale.x,
                    transform.localScale.y,
                    transform.localScale.z + (bulletSpeed * Time.deltaTime * 30));
            }
        }
    }
예제 #11
0
    // ------------------------------------------------------------------------
    // レーザーを前進させる.
    // ------------------------------------------------------------------------
    private void ForwardBullet()
    {
        // 敵機がある時のみ処理.
        if (target)
        {
            // レーザーを進める.
            transform.Translate(new Vector3(0f, 0f, bulletSpeed * Time.deltaTime));

            // 戦闘空間のスクロール方向を加える.
            transform.position -= battleSpaceContoller.GetAdditionPos();

            // レーザーを伸ばす.
            if (transform.localScale.z < laserSize)
            {
                transform.localScale = new Vector3(
                    transform.localScale.x,
                    transform.localScale.y,
                    transform.localScale.z + (bulletSpeed * Time.deltaTime * 30));
            }
        }
    }
예제 #12
0
    void Update()
    {
        // プレイヤーとの距離を確認.
        float distance = Vector3.Distance(
            player.transform.position,
            transform.position);

        if (state == State.TOPLAYER && distance < distanceToPlayer)
        {
            state = State.ESCAPE1START;
            destinationPosition = transform.position;
        }

        // 画面上部より登場する処理.
        if (state == State.TOPLAYER)
        {
            transform.position += transform.forward * startSpeed * Time.deltaTime;
        }

        // プレイヤーが操作可能な時のみ処理する.
        if (playerStatus.GetIsNOWPLAYING())
        {
            // 攻撃1.
            Attack1();

            // 攻撃2.
            Attack2();

            // 攻撃3.
            Attack3();

            // 攻撃中の処理.
            Attacking();

            // 攻撃中にプレイヤーとの間合いを取る.
            SetDistanceToPlayerAtAttack();

            // 回避1.
            Escape1();

            // 回避2.
            Escape2();

            // 回避3.
            Escape3();

            // 攻撃位置へ移動1.
            Move1();

            // 攻撃位置へ移動2.
            Move2();

            // 攻撃位置へ移動3.
            Move3();

            // 攻撃直前動作1.
            MotionJustBeforeAttack1();

            // 攻撃直前動作2.
            MotionJustBeforeAttack2();

            // 攻撃直前動作3.
            MotionJustBeforeAttack3();

            // 攻撃直前にプレイヤーとの間合いを取る.
            SetDistanceToPlayerJustBefortAttack();

            // プレイヤーとの間合いを取る.
            SetDistanceToPlayer();

            // 回避行動.
            EscapeFromPlayer();
        }

        // 戦闘空間のスクロール方向を加える.
        transform.position -= battleSpaceContoller.GetAdditionPos();
    }
    void Update()
    {
        // 确认和玩家之间的距离
        float distance = Vector3.Distance(
            player.transform.position,
            transform.position);

        if (state == State.TOPLAYER && distance < distanceToPlayer)
        {
            state = State.ESCAPE1START;
            destinationPosition = transform.position;
        }

        // 从画面上部出现的处理
        if (state == State.TOPLAYER)
        {
            transform.position += transform.forward * startSpeed * Time.deltaTime;
        }

        // 只在允许玩家操作时处理
        if (playerStatus.GetIsNOWPLAYING())
        {
            // 攻击1
            Attack1();

            // 攻击2
            Attack2();

            // 攻击3
            Attack3();

            // 攻击过程中的处理
            Attacking();

            // 取得攻击过程中和玩家间的距离
            SetDistanceToPlayerAtAttack();

            // 回避1
            Escape1();

            // 回避2
            Escape2();

            // 回避3
            Escape3();

            // 向攻击位置移动1
            Move1();

            // 向攻击位置移动2
            Move2();

            // 向攻击位置移动3
            Move3();

            // 攻击前的动作1
            MotionJustBeforeAttack1();

            // 攻击前的动作2
            MotionJustBeforeAttack2();

            // 攻击前的动作3
            MotionJustBeforeAttack3();

            // 攻击前瞬间获取和玩家之间的距离
            SetDistanceToPlayerJustBefortAttack();

            // 获取和玩家间的距离
            SetDistanceToPlayer();

            // 回避
            EscapeFromPlayer();
        }

        // 叠加战斗空间的滚动方向
        transform.position -= battleSpaceContoller.GetAdditionPos();
    }