完成動画
はじめに
今回は、円運動するキルブロックを作る方法を紹介します。ピボット編集を使って、中心をずらした回転を設定し、 プレイヤーが触れると倒される仕組みを作ります。
使用する機能
- Pivot Edit(パーツの中心を変更)
- GetPivot(ピボット位置を取得)
- PivotTo(ピボット位置を変更)
- CFrame.Angles(回転変換)
- RunService.Heartbeat(フレームごとの更新処理)
- Touched(接触イベント)
- FindFirstChildOfClass(特定のクラスの子オブジェクトを取得)
- Humanoid.Health(プレイヤーの体力を管理)
エクスプローラ構成
エクスプローラの構成は以下の通りです。
Workspace
└Part
└Script手順動画
パーツの設定
以下からパーツの設定手順を紹介していきます。
1. キルブロックを作る
- パーツを追加
- サイズや色を変更(目立つ色にすると分かりやすい)
- 材質を変更(危険をイメージさせる材質)
- アンカーをオンにする
2. ピボットを編集
- モデルタブ → ピボット編集 を選択
- パーツの中心を少し外側に移動
スクリプトを追加
- Partにスクリプトを追加
- スクリプトに以下のコードを記入
local part = script.Parent -- 回転するパーツ
local speed = 2 -- 回転速度
local RunService = game:GetService("RunService")
-- 回転処理
RunService.Heartbeat:Connect(function(deltaTime)
local pivot = part:GetPivot()
part:PivotTo(pivot * CFrame.Angles(0, math.rad(speed), 0))
end)
-- 触れたら倒される処理
part.Touched:Connect(function(hit)
local character = hit.Parent
local humanoid = character:FindFirstChildOfClass("Humanoid")
if humanoid then
humanoid.Health = 0 -- プレイヤーを倒す
end
end)簡単解説
1. 適用パーツと回転速度
local part = script.Parent -- 回転するパーツ
local speed = 2 -- 回転速度script.Parentはスクリプトが入っているオブジェクト(パーツ)を指します。speedは回転速度を設定します。値を大きくすると回転が速くなります。
2. RunService
local RunService = game:GetService("RunService")RunServiceはフレームごとの更新処理を管理するサービスです。
RunService.Heartbeat:Connect(function(deltaTime)
local pivot = part:GetPivot()
part:PivotTo(pivot * CFrame.Angles(0, math.rad(speed), 0))
end)Heartbeatイベントを使い、毎フレーム回転処理を実行します。GetPivot()でパーツの現在のピボット位置を取得します。PivotTo()を使い、CFrame.Angles(0, math.rad(speed), 0)でY軸方向に回転させます。
3. プレイヤーのライフを0にする
part.Touched:Connect(function(hit)
local character = hit.Parent
local humanoid = character:FindFirstChildOfClass("Humanoid")
if humanoid then
humanoid.Health = 0 -- プレイヤーを倒す
end
end)Touchedイベントは、パーツが他のオブジェクトに触れたときに実行されます。- 触れたオブジェクトの
Parentを取得し、その中にHumanoid(プレイヤーの体を制御するオブジェクト)があるか確認します。 Health = 0に設定することで、プレイヤーを倒します。
まとめ
ピボット編集 で回転の中心をずらすことで、パーツを円運動させることができます。




コメント