マウスを追え!2関節ロボットアーム

マウスを追え!2関節ロボットアーム
ok-scratch

スクラッチに挑戦している皆さん、どうも!スクラッチコーチです。

Scratchで肩・肘・クローの3スプライトを繋いだ2関節ロボットアームを作ろう。「向ける→回す→動かす」の連鎖パターンで本物の関節シミュレーションが完成。スペースキーでクローにエフェクトも追加できるよ。

さぁ、スクラッチでナニ作る!?

動画で見てみよう

ok-scratch ok-scratch
チャンネル登録して応援よろしく!チャンネル登録する

チュートリアルの元になった作品

小技:ロボットアーム

小技:ロボットアーム

by ok-scratch
プレイしておこう プレイしておこう
今回のスクラッチを作る参考作品です。向ける→回す→動かすの3ブロックをつなぐだけで、本物のロボット工学(順運動学)と全く同じ原理が動いてる。各関節の角度オフセットと腕の長さを数値で設定するだけで、マウスを滑らかに追いかける2関節アームが完成してくる発想がキレッキレ。変数もリストもカスタムブロックも一切使わないのに、このリアルな関節の動きが出てくるの、マジでヤバい。連鎖パターンの組み立て方、見ていこう。

今回の目標

肩・肘・クローの3スプライトを「向ける→回す→動かす」の連鎖でつなぎ、マウスを追いかける2関節ロボットアームを作る。

スターター作品をリミックスしよう

このチュートリアルにはスターター作品があります。使わなくても大丈夫だけど、最低限の素材などが用意されてるので便利です。
スターター作品をダウンロード

#1肩パーツの準備

ok-scratch ok-scratch
マウスに追従する2関節のロボットアームを作っていくよ。まずは根元になる「肩」パーツから。

準備

スプライト「肩」を開く

肩
スプライトについて
ロボットアームの根元となる肩関節スプライト。d/aキーで左右に移動できる
どんな役割か
ロボットアームの根元を作るよ!d/aキーを押すと左右に動かせるよ。まずは肩から作ってみよう。

実装

step-0

イベントgreenflag が押されたときで座標を(-150, -50)にセット、コスチュームを「肩関節」にしてサイズを80%にするよ。画面の左下あたりにアームの支点が配置される感じだね。

確認プレビューしておこう 確認プレビューしておこう
旗を押すと肩が左下に移動して、コスチュームとサイズがセットされたね。

#2肩の左右移動

ok-scratch ok-scratch
肩をキーボードで動かせるようにしよう。アーム全体の土台だから、ここが動けば上に乗ってるパーツも全部ついてくるよ。
step-1

制御ずっとの中で調べる( ) キーが押されたを使ってDキーとAキーをチェック。Dなら+10、Aなら-10ずつx座標を変えることで、キーを押してる間だけ動く仕組みなんだ。

確認プレビューしておこう 確認プレビューしておこう
dキーとaキーで肩が左右に動くようになったよ。ここがアームの土台。

#3肘の追従設定

ok-scratch ok-scratch
肩が動くようになったね。次はアームの中間部分「肘」を作るよ。

準備

スプライト「肘」を開く

肘
スプライトについて
ロボットアームの中間部分となる肘関節スプライト。常にShoulderの位置に追従し、マウスに向いて延びる
どんな役割か
肩に追従する肘関節を作るよ!Shoulderにくっついてマウスの方向に向いて伸びる、アームの中間部分だよ。

実装

step-2

コスチュームを「肘関節」にしてサイズ80%。制御ずっとの中で動き( ) へ行くを使って、常にShoulder(肩)の位置に追従させるんだ。肩が左右に動くと、肘もぴったりくっついてくる仕組みだね。

確認プレビューしておこう 確認プレビューしておこう
肘が追加されて、肩の位置にずっとくっついてくるようになったね。

#4肘の関節シミュレーション

ok-scratch ok-scratch
ここからがこの作品の核心。ただ肩にくっつくだけじゃなく、マウスの方向に「腕を伸ばす」動きを作るよ。
step-3

動き( ) へ向けるでマウスポインターの方を向いて、動き( ) ( ) 度回すで左に30度回して、10歩前に進む。この「向ける→回す→動かす」の連鎖が関節シミュレーションの基本パターン。30度が関節の角度オフセット、10歩が肩から肘までの骨の長さに相当していて、もしこの角度オフセットがなかったら肘が肩の真正面にしか来ず、曲がった腕にならないんだよ。

ok-scratch ok-scratch
この「向ける→回す→動かす」の連鎖パターン、実はロボット工学で「順運動学(フォワードキネマティクス)」と呼ばれてる考え方と同じなんだ。工場で動いてる産業用ロボットアームも、各関節の角度と腕の長さから先端の位置を計算してるんだよね。Scratchの数ブロックで本物のロボットと同じ原理が再現できるって、ちょっとすごくない?

確認プレビューしておこう 確認プレビューしておこう
「向ける→回す→動かす」の連鎖で、肘がマウスの方向に向きつつ肩から離れた位置に伸びるようになったよ。

#5クローの追従設定

ok-scratch ok-scratch
Elbow(肘)の設定が終わったから、いよいよ最後のパーツ、先端のClaw(クロー)を作っていくよ。

準備

スプライト「クロー」を開く

クロークロー
スプライトについて
ロボットアームの先端となるクロースプライト。Elbowの位置に追従し、マウスを追いかける。スペースキーでエフェクトを切り替える
どんな役割か
アームの先っちょのクローを作るよ!肘にくっついてマウスを追いかけて、スペースキーで色やぐるぐるエフェクトが切り替わるよ。

実装

step-4

肘のときと同じパターンで、コスチュームを「クロー閉」にしてサイズ80%にしたら、制御ずっとの中で動き( ) へ行くを使ってElbow(肘)の位置に追従させる仕組みだね。

ok-scratch ok-scratch
gotoで別スプライトに追従させるこのパターン、RPGで仲間キャラがプレイヤーの後ろをゾロゾロついてくるアレと同じ仕組みなんだ。先頭の位置を次のキャラが追いかけて、その位置をさらに次のキャラが追いかける。肩→肘→クローの3パーツは、まさに3人パーティの行進と同じ原理。この追従の連鎖は2Dゲームのいろんな場面で応用できる基本テクニックだよ。

確認プレビューしておこう 確認プレビューしておこう
クローが肘の位置に追従するようになった。2つ目の関節がつながった感じ。

#6クローのエフェクト制御

step-5

クローにスペースキーで切り替わるエフェクトをつけるよ。まず動き( ) へ向けるでマウスの方向を向かせてから、エフェクト制御に入るんだ。

制御もし ( ) ならでなければでスペースキーの押下状態を判定。押してる間は「色」の効果を+5、「渦巻き」の効果を+5ずつ毎フレーム変化させて、離したら見た目画像効果をなくすで一括リセットするよ。押し続けるほどどんどん色が変わってグルグルして、離すとパッと元に戻る。

ここで使っている見た目( ) の効果を ( ) ずつ変えるは累積するのがミソ。1フレームで+5、2フレームで+10って足し算されていくから、押し続ける時間が長いほど変化が激しくなるんだ。

確認プレビューしておこう 確認プレビューしておこう
クローがマウスを追いかけて、スペースキーで色と渦巻のエフェクトが切り替わるようになったね。

#72関節アームの完成

ok-scratch ok-scratch
いよいよ最後の仕上げだ。肘で使った「回す→動かす」をクローにも適用して、2関節のロボットアームを完成させるよ。
step-6

動き( ) ( ) 度回すで右に30度回して、動き( ) 歩動かすで70歩進む。肘では左30度・10歩だったのが、クローでは右30度・70歩。回す方向が逆で距離も長いから、クローは肘から大きく離れた位置に伸びるんだ。

普通、マウスにスプライトを追従させるなら動き( ) へ行く動き( ) へ向けるだけで十分じゃん。でもそれだと各パーツが独立にマウスを追うだけで、関節のつながりが表現できない。goto→point→turn→moveの連鎖があるからこそ、腕のリーチ制限や角度制約が自然に再現されるんだ。

まとめ

「向ける→回す→動かす」の連鎖パターン、バッチリ使いこなせたかな。この組み合わせを覚えておくと、触手とかヘビゲームとか、いろんな「くねくね動く」表現に応用できるよ。数ブロックで順運動学が再現できちゃうScratch、なかなかやるでしょ。どんどんアレンジしていこう!

ブクマよろしくお願いします! ブクマよろしくお願いします!
どんどん追記・更新していくので、ブックマークやシェアよろしくお願いします!