Ifステートメントは、コードを実行する前に真である必要のある複数の条件を持つことができます。キーワードandを使用すると、ステートメントを組み合わせることができます。以下のコードは、最初に2プラス2が6に等しいかどうかを評価し、その後に4が6に等しくないかどうかを評価します。両方のステートメントが真であれば、コードは実行されます。
-- 実行されませんif 2 + 2 == 6 and 4 ~= 6 thenprint("両方のステートメントが真です")end-- 実行されますif 4 + 2 == 6 and 4 ~= 6 thenprint("両方のステートメントが真です")end
パワーアップを作成する
パワーアップは、プレイヤーに飛行、透明、または速さのような特別な能力を与える体験内アイテムです。このパワーアップは、パワーアップに触れるたびにプレイヤーの歩行速度をブーストします。ブーストを継続的に適用すると、プレイヤーが非常に速くなりすぎる可能性があるため、andを使用して上限の歩行速度を制御します。
パワーアップをセットアップする
このコードを使用して、クリスタル、コイン、または光るネオンオーブなどのシンプルなパーツまたはモデルを作成します。
Powerupという新しいパートを作成し、WalkSpeedManagerという名前のスクリプトを挿入します。
speedBoostという名前の変数を宣言し、スクリプトの親オブジェクトを代入します。
-- 触れたときに一時的にスピードブーストを与えますlocal speedBoost = script.ParentonTouchという名前の関数をセットアップし、それを親オブジェクトのTouchedイベントに接続します。次に、プレイテストして作業を確認します。
local speedBoost = script.Parentlocal function onTouch(otherPart)print("何かがspeedBoostに触れました")endspeedBoost.Touched:Connect(onTouch)WalkSpeedプロパティはHumanoidオブジェクトにあります。トラップパーツを作成する際に使用したのと同じパターンを使用し、Humanoidオブジェクトをチェックする条件を作成します。
Humanoidパーツを探しますlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid thenprint("Humanoidが見つかりました")endend
プレイヤーを速くする
スピードブーストは、スピードブーストに触れるたびにアバターを速く歩かせます。これにより、非常に速くなります。キーワードandは、プレイヤーの速度が一定の速度未満である場合のみスピードブーストを有効にすることで、プレイヤーが速くなりすぎないようにします。
Humanoidが見つかった場合、現在のWalkSpeed値に10を加えます。プレイテストを行うと、アバターはスピードブーストに触れるたびに速くなります。
現在のWalkSpeedを増加させますlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid thenhumanoid.WalkSpeed += 10endendspeedBoost.Touched:Connect(onTouch)if文の中で、キーワードandを使用して、現在のWalkSpeed値が50未満であるという2つ目の条件を追加します。ブーストを加えた後、最も速いWalkSpeed値は60になります。
現在のWalkSpeedが50以下かチェックしますif humanoid and humanoid.WalkSpeed <= 50 thenhumanoid.WalkSpeed += 10end
スピードブーストを微調整する
onTouchは、スピードブーストに触れるたびに呼び出されます。すべてのステップやわずかなバウンスがTouchedイベントをトリガーし、接続された関数を呼び出します。パーツのプロパティCanTouchを使用すると、Touchedイベントの発火を防ぐことができます。CanTouchを利用して、スピードブーストがアクティブになったときに1秒間オフにします。
ブーストを適用した後、パーツのCanTouchプロパティをfalseに設定します。プレイテストを行い、ブーストが1回のみ適用されることを確認します。
スピードブーストを無効にしますlocal speedBoost = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid and humanoid.WalkSpeed <= 50 thenhumanoid.WalkSpeed += 10speedBoost.CanTouch = falseendendspeedBoost.Touched:Connect(onTouch)task.wait(1)を使用して、スクリプトを1秒間一時停止し、次にCanTouchをtrueに設定します。プレイテストを行い、スピードブーストが1秒後に再適用できることを確認します。
完了したスクリプトlocal speedBoost = script.Parentlocal function onTouch(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid and humanoid.WalkSpeed <= 50 thenhumanoid.WalkSpeed += 10speedBoost.CanTouch = falsetask.wait(1)speedBoost.CanTouch = trueendendspeedBoost.Touched:Connect(onTouch)完成したスクリプト内の値で遊んでみてください。WalkSpeedは最大100まで上昇できます。デフォルトのWalkSpeed値は16です。
まとめ
キーワードandは、0より大きく100未満の値のように、コードチャンクを実行する前に複数の条件を要求するために使用できます。また、Humanoidが存在し、そのWalkSpeedが50以下である場合にも使用できます。