3-3 if/then の練習ーパワーアップ

複数のステートメントの評価

If ステートメントには、コードを実行する前に複数の条件を含めることができます。and や or キーワードを使用することで、複数の条件を組み合わせることができます。次のコードは、最初に 2 プラス 2 が 6 に等しいかどうかを評価し、次に 4 が 6 に等しくないかどうかを評価します。両方のステートメントが true の場合、コードは実行されます。

-- 実行されない
if 2+2 == 6 and 4 ~= 6 then
    print("Both statements are true")
end

-- 実行される
if 4+2 == 6 and  4~=6 then
    print("Both statements are true")
end

パワーアップの作成

パワーアップは、プレイヤーに飛行、透明化、スピードなどの特別な能力を与えるゲーム内アイテムです。このパワーアップは、これに触れるたびにプレイヤーの歩行速度を加速させます。ブーストを継続的に適用すると、プレイヤーの移動速度が速くなりすぎる可能性があるため、歩行速度の上限を制御します。

パワーアップの設定

このコードは、クリスタル、コイン、輝くネオン球などの単純なパーツまたはモデルで使用可能です。

  1. Powerupという名前の新しいパーツを作成し、 WalkSpeedManagerという名前のスクリプトを挿入します。
  1. SpeedBoostという名前の変数を宣言し、スクリプトの親オブジェクトを割り当てます。
-- 触れると一時的にスピードが上がる
local speedBoost= script.Parent
  1. onTouchという名前の関数を設定し、親オブジェクトのTouchedイベントに接続します。次にテストプレイして動作を確認します。
local speedBoost= script.Parent

local function onTouch(otherPart)
    print("Something touched speedBoost")
end

speedBoost.Touched:Connect(onTouch)
  1. WalkSpeed プロパティは Humanoid オブジェクトにあります。トラップ パーツの作成時に使用した時と同じように、Humanoid オブジェクトをチェックする条件を作成します。
local function onTouch(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")

    if humanoid then
        print("A Humanoid was found")
    end
end

プレイヤーのスピードアップ

速度ブーストにタッチするたびにアバターの歩行が速くなります。触れるたびに上限なく速度が速くなります。それを防ぐには2つ目のキーワードを使い、プレーヤーが特定の速度以下の場合にのみ速度ブーストを有効にすることで、プレーヤーが速度を出しすぎないようにコントロールします。

  1. Humanoid が見つかった場合は、現在の WalkSpeed 値に 10 を加えます。テストプレイすると、速度ブーストに触れるたびにアバターが速くなります。
local function onTouch(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")

    if humanoid then
        humanoid.WalkSpeed = humanoid.WalkSpeed + 10
    end
end

speedBoost.Touched:Connect(onTouch)
  1. if ステートメントで、現在の WalkSpeed 値が 50 未満であるという 2 つ目の条件を追加します。ブーストを追加すると、最速の WalkSpeed 値は 60 になります。
if humanoid and humanoid.WalkSpeed <= 50 then
    humanoid.WalkSpeed = humanoid.WalkSpeed + 10
end

速度ブーストの微調整

onTouch は、スピードブーストに触れるたびに呼び出されます。わずかな動きでも Touched イベントが発動し、接続されている関数が呼び出されます。PartのプロパティであるCanTouch は、 Touched イベントの発生を防ぐことができます。CanTouch を利用して、速度ブーストがアクティブになるたびに 1 秒間オフにします。

  1. ブーストを適用した後、パーツの CanTouch プロパティを false に設定します。テストプレイを行って、ブーストが 1 回のみ適用されることを確認します。
local speedBoost= script.Parent

local function onTouch(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")

    if humanoid and humanoid.WalkSpeed <= 50 then
        humanoid.WalkSpeed = humanoid.WalkSpeed + 10
        speedBoost.CanTouch = false
    end
end

speedBoost.Touched:Connect(onTouch)
  1. task.wait(1)を使用してスクリプトを 1 秒間一時停止し、CanTouch を true に設定します。プレイテストを行って、1 秒後に速度ブーストを再適用できることを確認します。
local speedBoost= script.Parent

local function onTouch(otherPart)
    local character = otherPart.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")

    if humanoid and humanoid.WalkSpeed <= 50 then
        humanoid.WalkSpeed = humanoid.WalkSpeed + 10
        speedBoost.CanTouch = false
        task.wait(1)
        speedBoost.CanTouch = true
    end
end

speedBoost.Touched:Connect(onTouch)
  1. 完成したスクリプトの値を試してみましょう。WalkSpeed は最大 100 まで設定できます。デフォルトの WalkSpeed 値は 16 です。

まとめ

キーワードとを使用すると、コード チャンクを実行する前に、値が 0 より大きく 100 未満であること、またはヒューマノイドがあり、その WalkSpeed が 50 以下であることなど、複数の条件を要求することができます。

コメントを残す