複数のステートメントの評価
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
パワーアップの作成
パワーアップは、プレイヤーに飛行、透明化、スピードなどの特別な能力を与えるゲーム内アイテムです。このパワーアップは、これに触れるたびにプレイヤーの歩行速度を加速させます。ブーストを継続的に適用すると、プレイヤーの移動速度が速くなりすぎる可能性があるため、歩行速度の上限を制御します。
パワーアップの設定
このコードは、クリスタル、コイン、輝くネオン球などの単純なパーツまたはモデルで使用可能です。
- Powerupという名前の新しいパーツを作成し、 WalkSpeedManagerという名前のスクリプトを挿入します。
- SpeedBoostという名前の変数を宣言し、スクリプトの親オブジェクトを割り当てます。
-- 触れると一時的にスピードが上がる
local speedBoost= script.Parent
- onTouchという名前の関数を設定し、親オブジェクトのTouchedイベントに接続します。次にテストプレイして動作を確認します。
local speedBoost= script.Parent
local function onTouch(otherPart)
print("Something touched speedBoost")
end
speedBoost.Touched:Connect(onTouch)
- 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つ目のキーワードを使い、プレーヤーが特定の速度以下の場合にのみ速度ブーストを有効にすることで、プレーヤーが速度を出しすぎないようにコントロールします。
- 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)
- 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 秒間オフにします。
- ブーストを適用した後、パーツの 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)
- 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)
- 完成したスクリプトの値を試してみましょう。WalkSpeed は最大 100 まで設定できます。デフォルトの WalkSpeed 値は 16 です。
まとめ
キーワードとを使用すると、コード チャンクを実行する前に、値が 0 より大きく 100 未満であること、またはヒューマノイドがあり、その WalkSpeed が 50 以下であることなど、複数の条件を要求することができます。