0. 完成動画
1. はじめに
Roblox Studioでは、デフォルトでプレイヤーは地面にいるときしかジャンプできません。しかし、スクリプトを活用することで、プレイヤーが空中でもジャンプできる「空中ジャンプ」を実装することができます。本記事では、その方法を詳しく解説します。
2. 使用する機能
- Humanoid.StateChanged
- Humanoid:GetState()
- Humanoid:ChangeState()
- FindFirstChildOfClass()
- UserInputService.InputBegan
- Enum.KeyCode.Space
- CharacterAdded:Wait()
3. 空中ジャンプを可能にするスクリプト
以下のスクリプトを StarterCharacterScripts
に配置すると、プレイヤーが空中でもジャンプできるようになります。
3.1 スクリプトのコード
local player = game.Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait() -- キャラがロードされるのを待つ
local humanoid = character:FindFirstChildOfClass("Humanoid")
local UserInputService = game:GetService("UserInputService")
if humanoid then
-- HumanoidクラスのStateChangedイベントを設定
humanoid.StateChanged:Connect(function(oldState, newState)
if newState == Enum.HumanoidStateType.Jumping then
-- ジャンプキーが押されたら空中でもジャンプできるようにする
UserInputService.InputBegan:Connect(function(inputObject)
if inputObject.KeyCode == Enum.KeyCode.Space then
if humanoid:GetState() ~= Enum.HumanoidStateType.Jumping then
humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
end
end
end)
end
end)
end
4. コードの解説
4.1 プレイヤーのキャラクターとHumanoidを取得
local player = game.Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:FindFirstChildOfClass("Humanoid")
LocalPlayer
からキャラクターを取得。- キャラクターがロードされるまで待機。
- キャラクター内の
Humanoid
を取得。
4.2 ジャンプ状態を検出
humanoid.StateChanged:Connect(function(oldState, newState)
if newState == Enum.HumanoidStateType.Jumping then
StateChanged
イベントを使用して、キャラクターがジャンプしたことを検出。
4.3 空中ジャンプを有効化
UserInputService.InputBegan:Connect(function(inputObject)
if inputObject.KeyCode == Enum.KeyCode.Space then
if humanoid:GetState() ~= Enum.HumanoidStateType.Jumping then
humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
end
end
end)
UserInputService
を使用し、プレイヤーのキー入力を監視。- スペースキー (
Space
) が押されたときにChangeState
を使って再度ジャンプを発動。
5. まとめ
このスクリプトを StarterCharacterScripts
に配置することで、プレイヤーが空中でもジャンプできるようになります。
コメント