「さわるとやられる」の正体。たった1行でした
動作確認日: 2026年9月9日(Roblox Studio 0.736)
連載「アスレチック(オビー)を作ろう」の第16回です。第1回から読む
前回はわざと壊して、数字の正体を確かめました。
今日は、ずっと後まわしにしてきたものを開きます。
「さわるとやられる」は、どうやって決まっているのか。
見なかったことにしていました
第12回で回る棒のスクリプトを開いたとき、上のほうにこう書いてありました。
-- 棒に当たったら死亡
あのときは「そういうことが書いてある」とだけ言って、通り過ぎました。
今日はここを読みます。
13行あります

うわ、と思った人。第9回と同じ反応です。
でも、第10回でやったのと同じことをします。大事なところだけ見ます。
この13行で本当に効いているのは、2行だけです。
1行目:さわられたら

Touched は「さわられた」という意味です。
ロブロックス(Roblox)は、パーツに何かが当たった瞬間を教えてくれます。その合図の名前が Touched です。
Connect は「結びつける」。
つまりこの行は、こう言っています。
さわられたら、このあとに書いてあることをやってね。
ずっと動くのと、待っているのの、ちがい
ここが今日いちばん大事なところです。
第10回で読んだ回る床は、while true do でずっと自分から動いていました。
でも、この当たり判定はちがいます。
| 回る床 | 当たり判定 | |
|---|---|---|
| 書き方 | while true do | Touched:Connect |
| いつ動く | ずっと | さわられたときだけ |
| たとえると | 走りつづける | 待ちかまえている |
ふだんは何もしていません。何かが起きたときだけ動きます。
ボタンを押したら音が鳴る、コインに当たったら点が入る、ドアに近づいたら開く——ゲームの中のできごとは、たいていこの形で作られています。
2行目:体力を0にする

humanoid.Health = 0
Health は「体力」です。
Robloxのキャラクターは体力を持っていて、ふつうは 100 から始まります。0になると、やられます。
この行は、体力をいきなり0にしています。
それだけです。 これが「さわるとやられる」の正体でした。
魔法でも、特別な機能でもありません。体力を0にする、という1行です。
試してみましょう
前回の続きで、実験できます。
0 を 50 に変えてみてください。
さわると体力が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行です。
自分で作るときは
これが分かると、自分で危ないものを作れます。
- パーツを置く
- その中に Script を入れる
Touchedで待ちかまえる- さわられたら
Healthを減らす
赤くしてトゲにしてもいいし、水色にして氷にしてもいい。見た目は自由です。
連載の後半で、実際に作ってみます。
まとめ
- 「さわるとやられる」は魔法ではない。書いてある
Touchedは「さわられた」という合図。Connectで、やることを結びつける- 回る床の
while true doはずっと動く。Touchedは待ちかまえている humanoid.Health = 0が本体。体力を0にしているだけ0を50にすると死ななくなる。試して確かめられる~=は「ではない」。ただし今回の作品に「中心」はなく、将来のための備えとして書かれているforとGetChildrenで、3本まとめてつけている- 棒も赤い球も溶岩も、中身は同じ。ちがうのは見た目だけ
次回は、ずっと気になっていたはずのものを調べます。
アスレチックのとちゅうに置いてある、あの模様のついた板です。第2回で足元にあったのと同じもの。第8回で「これは後の回で使います」と書いたきり、そのままにしてありました。
