- スターター作品
- なし
- 今回の完成サンプル
- なし
さぁ、スクラッチでナニ作る!?
動画で見てみよう
[talk]チャンネル登録して応援よろしく!チャンネル登録する[/talk]チュートリアルの元になった作品
[prj-embed prj="1315123146" mini="1" title="プレイしておこう" prj-title="小技:ロボットアーム" prj-author="ok-scratch"]今回の[prj-link prj="1315123146" title="小技:ロボットアーム" author="ok-scratch"]スクラッチを作る参考作品[/prj-link]です。向ける→回す→動かすの3ブロックをつなぐだけで、本物のロボット工学(順運動学)と全く同じ原理が動いてる。各関節の角度オフセットと腕の長さを数値で設定するだけで、マウスを滑らかに追いかける2関節アームが完成してくる発想がキレッキレ。変数もリストもカスタムブロックも一切使わないのに、このリアルな関節の動きが出てくるの、マジでヤバい。連鎖パターンの組み立て方、見ていこう。[/prj-embed]今回の目標
スターター作品をリミックスしよう
このチュートリアルにはスターター作品があります。使わなくても大丈夫だけど、最低限の素材などが用意されてるので便利です。
スターター作品をダウンロード
#1肩パーツの準備
[talk class="m-l-n"]マウスに追従する2関節のロボットアームを作っていくよ。まずは根元になる「肩」パーツから。[/talk]準備
スプライト「肩」を開く
| スプライトについて |
|---|
| ロボットアームの根元となる肩関節スプライト。d/aキーで左右に移動できる |
| どんな役割か |
| ロボットアームの根元を作るよ!d/aキーを押すと左右に動かせるよ。まずは肩から作ってみよう。 |
実装
#2肩の左右移動
[talk class="m-l-n"]肩をキーボードで動かせるようにしよう。アーム全体の土台だから、ここが動けば上に乗ってるパーツも全部ついてくるよ。[/talk]ずっとの中で( ) キーが押されたを使ってDキーとAキーをチェック。Dなら+10、Aなら-10ずつx座標を変えることで、キーを押してる間だけ動く仕組みなんだ。
#3肘の追従設定
[talk class="m-l-n"]肩が動くようになったね。次はアームの中間部分「肘」を作るよ。[/talk]準備
スプライト「肘」を開く
| スプライトについて |
|---|
| ロボットアームの中間部分となる肘関節スプライト。常にShoulderの位置に追従し、マウスに向いて延びる |
| どんな役割か |
| 肩に追従する肘関節を作るよ!Shoulderにくっついてマウスの方向に向いて伸びる、アームの中間部分だよ。 |
実装
コスチュームを「肘関節」にしてサイズ80%。ずっとの中で( ) へ行くを使って、常にShoulder(肩)の位置に追従させるんだ。肩が左右に動くと、肘もぴったりくっついてくる仕組みだね。
#4肘の関節シミュレーション
[talk class="m-l-n"]ここからがこの作品の核心。ただ肩にくっつくだけじゃなく、マウスの方向に「腕を伸ばす」動きを作るよ。[/talk]( ) へ向けるでマウスポインターの方を向いて、( ) ( ) 度回すで左に30度回して、10歩前に進む。この「向ける→回す→動かす」の連鎖が関節シミュレーションの基本パターン。30度が関節の角度オフセット、10歩が肩から肘までの骨の長さに相当していて、もしこの角度オフセットがなかったら肘が肩の真正面にしか来ず、曲がった腕にならないんだよ。
[talk]この「向ける→回す→動かす」の連鎖パターン、実はロボット工学で「順運動学(フォワードキネマティクス)」と呼ばれてる考え方と同じなんだ。工場で動いてる産業用ロボットアームも、各関節の角度と腕の長さから先端の位置を計算してるんだよね。Scratchの数ブロックで本物のロボットと同じ原理が再現できるって、ちょっとすごくない?[/talk]
#5クローの追従設定
[talk class="m-l-n"]Elbow(肘)の設定が終わったから、いよいよ最後のパーツ、先端のClaw(クロー)を作っていくよ。[/talk]準備
スプライト「クロー」を開く
| スプライトについて |
|---|
| ロボットアームの先端となるクロースプライト。Elbowの位置に追従し、マウスを追いかける。スペースキーでエフェクトを切り替える |
| どんな役割か |
| アームの先っちょのクローを作るよ!肘にくっついてマウスを追いかけて、スペースキーで色やぐるぐるエフェクトが切り替わるよ。 |
実装
肘のときと同じパターンで、コスチュームを「クロー閉」にしてサイズ80%にしたら、ずっとの中で( ) へ行くを使ってElbow(肘)の位置に追従させる仕組みだね。
[talk]gotoで別スプライトに追従させるこのパターン、RPGで仲間キャラがプレイヤーの後ろをゾロゾロついてくるアレと同じ仕組みなんだ。先頭の位置を次のキャラが追いかけて、その位置をさらに次のキャラが追いかける。肩→肘→クローの3パーツは、まさに3人パーティの行進と同じ原理。この追従の連鎖は2Dゲームのいろんな場面で応用できる基本テクニックだよ。[/talk]
#6クローのエフェクト制御
クローにスペースキーで切り替わるエフェクトをつけるよ。まず( ) へ向けるでマウスの方向を向かせてから、エフェクト制御に入るんだ。
もし ( ) ならでなければでスペースキーの押下状態を判定。押してる間は「色」の効果を+5、「渦巻き」の効果を+5ずつ毎フレーム変化させて、離したら画像効果をなくすで一括リセットするよ。押し続けるほどどんどん色が変わってグルグルして、離すとパッと元に戻る。
ここで使っている( ) の効果を ( ) ずつ変えるは累積するのがミソ。1フレームで+5、2フレームで+10って足し算されていくから、押し続ける時間が長いほど変化が激しくなるんだ。
#72関節アームの完成
[talk class="m-l-n"]いよいよ最後の仕上げだ。肘で使った「回す→動かす」をクローにも適用して、2関節のロボットアームを完成させるよ。[/talk]( ) ( ) 度回すで右に30度回して、( ) 歩動かすで70歩進む。肘では左30度・10歩だったのが、クローでは右30度・70歩。回す方向が逆で距離も長いから、クローは肘から大きく離れた位置に伸びるんだ。
普通、マウスにスプライトを追従させるなら( ) へ行くと( ) へ向けるだけで十分じゃん。でもそれだと各パーツが独立にマウスを追うだけで、関節のつながりが表現できない。goto→point→turn→moveの連鎖があるからこそ、腕のリーチ制限や角度制約が自然に再現されるんだ。
まとめ
「向ける→回す→動かす」の連鎖パターン、バッチリ使いこなせたかな。この組み合わせを覚えておくと、触手とかヘビゲームとか、いろんな「くねくね動く」表現に応用できるよ。数ブロックで順運動学が再現できちゃうScratch、なかなかやるでしょ。どんどんアレンジしていこう!