Tech Kids Grand Prix 2026に「Roblox賞」が新設!応募は9/30(水)まで
CreateR Nest
ブログ一覧へ
Roblox Studio

「さわるとやられる」の正体。たった1行でした

動作確認日: 2026年9月9日(Roblox Studio 0.736

連載「アスレチック(オビー)を作ろう」の第16回です。第1回から読む

前回はわざと壊して、数字の正体を確かめました。

今日は、ずっと後まわしにしてきたものを開きます。

「さわるとやられる」は、どうやって決まっているのか。

見なかったことにしていました

第12回で回る棒のスクリプトを開いたとき、上のほうにこう書いてありました。

-- 棒に当たったら死亡

あのときは「そういうことが書いてある」とだけ言って、通り過ぎました。

今日はここを読みます。

13行あります

スクリプトの7行目から19行目。「棒に当たったら死亡」というメモから始まり、Touchedやhumanoid.Health = 0が並んでいる

うわ、と思った人。第9回と同じ反応です。

でも、第10回でやったのと同じことをします。大事なところだけ見ます。

この13行で本当に効いているのは、2行だけです。

1行目:さわられたら

スクリプトの10行目。object.Touched:Connect(function(hit)

Touched は「さわられた」という意味です。

ロブロックス(Roblox)は、パーツに何かが当たった瞬間を教えてくれます。その合図の名前が Touched です。

Connect は「結びつける」。

つまりこの行は、こう言っています。

さわられたら、このあとに書いてあることをやってね。

ずっと動くのと、待っているのの、ちがい

ここが今日いちばん大事なところです。

第10回で読んだ回る床は、while true doずっと自分から動いていました。

でも、この当たり判定はちがいます。

回る床当たり判定
書き方while true doTouched:Connect
いつ動くずっとさわられたときだけ
たとえると走りつづける待ちかまえている

ふだんは何もしていません。何かが起きたときだけ動きます。

ボタンを押したら音が鳴る、コインに当たったら点が入る、ドアに近づいたら開く——ゲームの中のできごとは、たいていこの形で作られています。

2行目:体力を0にする

スクリプトの14行目から16行目。if humanoid then / humanoid.Health = 0 / end

humanoid.Health = 0

Health は「体力」です。

Robloxのキャラクターは体力を持っていて、ふつうは 100 から始まります。0になると、やられます。

この行は、体力をいきなり0にしています。

それだけです。 これが「さわるとやられる」の正体でした。

魔法でも、特別な機能でもありません。体力を0にする、という1行です。

試してみましょう

前回の続きで、実験できます。

050 に変えてみてください。

さわると体力が50になります。でも、死にません。 何回さわっても50のままです。

「やられる」は0だから起きていたのだと、これで確かめられます。

残りは「だれの」体力かを探す部分

2行が分かれば、あとは付け足しです。

local character = hit:FindFirstAncestorOfClass("Model")
local humanoid = character and character:FindFirstChildOfClass("Humanoid")

さわってきたのが誰なのかを、たどっています。

さわってきたのは「足」や「手」かもしれません。そこからその人全体を探して、体力を持っている部分を見つけています。

ここは今日は分からなくて大丈夫です。だれの体力かを探している、とだけ思っておいてください。

「中心」は、どこにもありません

9行目に、おもしろいものがあります。

if object:IsA("BasePart") and object.Name ~= "中心" then

~= は「ではない」という意味です。つまり、名前が「中心」ではないものにだけ、さわり判定をつけています。

ところが——エクスプローラを開いても、「中心」という名前のものは見当たりません。

確かめてみてください。回る障害物 の中に入っているのは、Script と、白い棒(丸い床の障害物)だけです。

では、この行は何のためにあるのか

あとから「中心」を足したときのためです。

回るものを作るとき、真ん中に軸を置くことがあります。その軸は、さわっても平気にしておきたい。そのときのために、先に書いてあるのです。

いまは「中心」がないので、この条件は何も除いていません。 白い棒3本すべてに、当たり判定がついています。

プログラムには、こういうまだ使っていない備えがよく入っています。「あとでこうするかもしれないから」と、先に書いておくのです。

読んでいて「これ、何もしていないな」という行に出会ったら、将来のための用意かもしれません。

名前で仕分ける、という考え方

いまは働いていなくても、やり方は覚えておく価値があります。

第13回危ない球 を思い出してください。あれは人が見て仕分けました。こちらはプログラムが名前で仕分けています。

名前は、人にもプログラムにも目印になります。

3本まとめてつけています

8行目です。

for _, object in model:GetChildren() do

GetChildren は「中に入っているもの全部」。for は「ひとつずつ順番に」です。

回る障害物の中には、白い棒が3本入っていました。この2つを合わせて、3本すべてに同じ当たり判定を一度でつけています。

第13回で、Shiftを使って球をまとめて選びましたね。あれと同じことを、プログラムでやっています。人はShift、プログラムは for

同じ仕組みが、あちこちに

この作品で「さわるとやられる」ものを思い出してください。

  • 回る棒
  • 赤い球
  • 足元の溶岩

全部、同じことをしています。 さわられたら、体力を0にする。

ちがうのは見た目だけです。

ゲームをたくさん遊んでいると、いろいろな「危ないもの」が出てきます。トゲ、炎、レーザー、毒の沼。見た目はぜんぶちがいますが、中身はだいたいこの1行です。

自分で作るときは

これが分かると、自分で危ないものを作れます。

  1. パーツを置く
  2. その中に Script を入れる
  3. Touched で待ちかまえる
  4. さわられたら Health を減らす

赤くしてトゲにしてもいいし、水色にして氷にしてもいい。見た目は自由です。

連載の後半で、実際に作ってみます。

まとめ

  • 「さわるとやられる」は魔法ではない。書いてある
  • Touched は「さわられた」という合図。Connect で、やることを結びつける
  • 回る床の while true doずっと動くTouched待ちかまえている
  • humanoid.Health = 0 が本体。体力を0にしているだけ
  • 050 にすると死ななくなる。試して確かめられる
  • ~= は「ではない」。ただし今回の作品に「中心」はなく、将来のための備えとして書かれている
  • forGetChildren で、3本まとめてつけている
  • 棒も赤い球も溶岩も、中身は同じ。ちがうのは見た目だけ

次回は、ずっと気になっていたはずのものを調べます。

アスレチックのとちゅうに置いてある、あの模様のついた板です。第2回で足元にあったのと同じもの。第8回で「これは後の回で使います」と書いたきり、そのままにしてありました。