1. 一時的な重力変更
本記事では、プレイヤーが特定のブロックに触れた際にゲーム内の重力が一時的に変化し、一定時間後に元の重力に戻る機能の実装方法を解説します。
2. 使用する機能
・Script
・Workspace
3. 手順
まず、Roblox Studioを起動します。今回は、テンプレート「Baseplate」を使用します。
プレイヤーが触れると重力が変わるブロックを設置していきます。
Partをクリックし、プレイヤーが触れやすいように大きくします。
分かりやすくするため、Partの色を変更します。
今回は、PartのプロパティにあるBrickColorをPinkに変更します。
重力を制御している項目を確認します。
一旦、ゲームをプレイし、「Workspace」オブジェクトを選択します。ここで「Gravity」プロパティを見つけることができ、これがゲーム全体の重力を制御しています。値を変更してみて、プレイヤーがどのように動くかを確認してみてください。
設置したPartの子要素にScriptを追加し、以下のコードを記入します。
local block = script.Parent
local originalGravity = workspace.Gravity
local alteredGravity = 25
local duration = 5
local function changeGravity()
workspace.Gravity = alteredGravity
wait(duration)
workspace.Gravity = originalGravity
end
local function onTouch(part)
local character = part.Parent
local humanoid = character:FindFirstChildOfClass("Humanoid")
if humanoid then
changeGravity()
end
end
block.Touched:Connect(onTouch)
上記コードの簡単な解説は以下となります。
- local block = script.Parent
local originalGravity = workspace.Gravity
local alteredGravity = 25
local duration = 5
block:スクリプトがアタッチされているオブジェクト(Part)を参照します。
originalGravity:ゲームの初期の重力設定を保持します。
alteredGravity:変更後の重力の値を25として保持します。
duration:重力が変更されている期間を秒単位で5として保持します。 - local function changeGravity()
workspace.Gravity = alteredGravity
wait(duration)
workspace.Gravity = originalGravity
end
changeGravity関数:ゲーム内の重力を一時的に変更し、指定した期間(duration)後に元に戻す機能を持っています。 - local function onTouch(part)
local character = part.Parent
local humanoid = character:FindFirstChildOfClass(“Humanoid”)
if humanoid then
changeGravity()
end
endonTouch
関数:ブロックが何かに触れたときに実行される関数です。
character:触れたオブジェクト(part)の親オブジェクトを参照します。
humanoid:characterオブジェクトの子オブジェクトの中からHumanoidクラスのオブジェクトを探し、それを変数に代入しています。
if humanoid then:humanoidオブジェクトが存在する場合、changeGravity関数を呼び出します。 - block.Touched:Connect(onTouch)
blockオブジェクトが何かに触れたときにonTouch関数を呼び出すイベントハンドラを設定しています。
要するに、このコードはプレイヤーが特定のブロックに触れると一時的にゲーム内の重力が小さくなり、5秒後に元の重力に戻る機能を実装しています。
この状態でゲームをプレイしてみます。
プレイヤーがブロックに触れるとゲーム全体の重力が小さくなり、一定時間経過後に元の重力に戻れば正しく設定できています。
本記事を通じて、プレイヤーがブロックに触れることでゲーム内の重力が一時的に変わり、設定した時間が経過した後に元の重力に戻る機能の実装方法を学びました。この知識を基に、プレイヤーのアクションに応じてゲームの環境がダイナミックに変化する、エンゲージングなゲームエクスペリエンスを作り出すことが可能となります。
コメント