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(); } }
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); } }
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); } }
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(); } } }
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(); }
// ------------------------------------------------------------------------ // 弾を前進させる. // ------------------------------------------------------------------------ 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(); } }
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)); } } }
// ------------------------------------------------------------------------ // レーザーを前進させる. // ------------------------------------------------------------------------ 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)); } } }
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(); }