//------------ // 完全停止 // //---------------------------------------------------------------------------------------- public void Stop() { // 操作不可状態に mIsActive = false; // 移動力をリセット mMovementScript.ResetVelocity(); // 発射されている弾を全て休眠状態に mFireScript.SleepAllBullets(); }
private float mGoalZ; // 目標とするz座標 /// <summary> /// mMoveState==DEFAULTの場合に、目標とするz座標を計算する /// </summary> public void DecideMovement() { if (mMoveState == MOVE_STATE.DEFAULT) { // 現在のz座標を取得 float currentZ = mTrans.position.z; // 移動可能なz軸の範囲から乱数取得 float rand = Random.Range(-14.0f, 15.0f); // 取得した乱数と現在のz座標の距離を計算 float difference = 0.0f; if (currentZ >= rand) { difference = Mathf.Abs(currentZ - rand); mMoveState = MOVE_STATE.DOWN; } else { difference = Mathf.Abs(rand - currentZ); mMoveState = MOVE_STATE.UP; } // 距離が1.0f以上あるならば目標の座標を決定し、そうでないならば次フレームまでその場で待機 if (difference >= 1.0f) { mGoalZ = rand; } else { mMoveState = MOVE_STATE.DEFAULT; } // mMoveStateを条件にして、TankMovementの移動メソッドを呼び出す switch (mMoveState) { case MOVE_STATE.DEFAULT: mMoveScript.ResetVelocity(); break; case MOVE_STATE.UP: mMoveScript.SetVelocityUp(); break; case MOVE_STATE.DOWN: mMoveScript.SetVelocityDown(); break; } } }