スクラッチプログラミングに挑戦している皆さん、どうも!スクラッチコーチです。
ゴンザレスからゲームクリエイターへの挑戦状
壁に
張り
付いてあたりを
見回してたスクラッチキャット、
遠くまでよく
見えるようにはなったけど
体が
動かない?!
一体何が……あぁそうか!
壁に
触れてると
常に
逆進する
力が
加わるから
動けなくなっちゃうんだ。このままだとまずいね……。
潜入捜査なのに
移動しづらいなんて、
厳しすぎるぅ!
今回の目標「移動のユーザビリティを高める」
壁に
当たると
動きが
止まっちゃう、というルールがゲームに
必要なら
別だけど、そうじゃないなら
壁にちょっと
触れたくらいでイチイチ
止まりたくない。たとえばレースとか、たとえば
鬼ごっこで
鬼から
逃げてるときとか、
壁にあたって
止まってたらスリリングなゲーム
体験が
損なわれてしまう。こういった「
使いやすさ」「プレイのストレスをなくす」みたいな
修正を「ユーザビリティを
高める」って
表現したりする。
今回は
移動に
関するユーザビリティを
改善していくぜ。
具体的には
以下のユーザビリティを
改善する。
- 壁にあたっても斜めに進めるようにする
- 矢印キーだけでなくWASDでも動けるようにする
- 回転せずに真横にスライドできるようにする(カニ歩き)
ok-scratch
u003cpu003e今回も三角関数が出てくるけど、いつもどおり使うだけだから恐れずに進んでいこう。一緒にトライしていこうぜ!u003c/pu003e
壁にあたっても斜めに進めるようにする
壁に
向かって
垂直にあたったら
止まるけど、
斜めに
進んでいる
最中に
壁にあたっても
止まらないようにしたい。
完成像は↓こんな
感じ。
これを
実現する。
定義「_移動値を計算する」を作る
引数はX
方向とY
方向という2つだよ。
それぞれの
引数を、X
座標とY
座標に
加算しよう。
そしてここでも「レベルに
触れたら」という
条件ブロックを
追加する。
壁に
触れたら
逆進するようにXとYにマイナス
方向の
力を
加算するぞ。
移動する距離を計算する
定義「_
移動する」に
修正を
加えるので、↓この
部分で
切り
離しておいて。
そして↓このブロックを
用意して
演算を
作る。
これと
向きの
sinを
組み
合わせる。
sinは
三角関数で、
円状の
動きの
計算によく
使われるんだ。ここでは
向き(90
度とか180
度)っていう
数字を0とか1とか0.45とかっていうある
程度の
範囲の
数字に
変換してくれてる。
試しにクリックしてどんな
数値が
入っているか
確かめてみるといいかも。
最終的にこうなる↓
これを
定義「_
移動値を
計算する」のX
方向に
割り
当てて、Y
方向にはゼロを
入れて
実行する。
さらに!もう一
回同じ
定義を
呼び
出す。ただし
引数に
注意。
今度はX
方向がゼロで、Y
方向に
三角関数cosに
変えたものを
使っている。
ok-scratch
u003cpu003eXとYでsinとcosを変えてる理由?そうだね、がっつり三角関数を説明しないとちゃんとは言えないけど、単純にsinとcosは似てるけど使いたい向きによって変えるっていうシンプルな回答にとどめておく。深く知りたい人は、学生なら数学が得意な先生に聞く、大人ならウィキペディアで調べる(グリフパッチさんと僕はこっちw)ことをオススメする!u003c/pu003e
最後に
切り
離しておいたブロックをくっつけておこう。
CHECK! 壁にあたっても斜めに進んでくれるかテストする
最高にスムーズでストレスフリーじゃない?
壁に
触れたら
動けなくなる
必要がないなら、こっちのほうが
絶対ゲーム
体験として
良いよね。
u003cpu003e壁につっかかるストレスを軽減したことで、ゲーム体験が向上した。u003c/pu003e
WASDでも動けるようにする
これはカンタン。「◯または◯」ブロックを
組み
込むだけ。
ok-scratch
u003cpu003e↑スクショだとずっとループのオレンジの囲いが見えてるけど、気にしないで。みんなはもうプレイヤーティックに移動しているはずだから、ループがなくて正解だよ。u003cbru003eこのあとのスクショでも同じです!u003c/pu003e
u003cpu003e1つの動きに複数キーを割り当てることで、ユーザーが使いやすいキー操作で遊べるようになったu003c/pu003e
横にスライド(カニ歩き)できるようにする
さらに
移動のユーザビリティを
高めていこう。
今度は
回転せずに
横に
移動する。
前を
向きながら
横に
移動する、カニ
歩きみたいな
機能を
実現する。
左にカニ歩きする
定義「_プレイヤーティック」に
新しい
条件ブロックを
追加しよう。
この
条件ブロックには「aキーが
押されたら」っていう
条件式をはめておいてね。(スクショ
忘れた)そして
大切なのはこの
中身。
次のとおりに
実装する。
- いったん左に90度回す。
- そして定義「_移動する」を呼ぶ。
- そのあと右に90度回して戻す。
この3ステップでカニ
歩きを
実現できる。
右にカニ歩きする
もしブロックを
複製しよう。
今度は
左右が
逆になるよ。
- いったん右に90度回す。
- そして定義「_移動する」を呼ぶ。
- そのあと左に90度回して戻す。
CHECK! カニ歩きできるかテストする
カニカニぃ!
u003cpu003e回転せずに左右にカニ歩きできるようになったu003c/pu003e
まとめ
今回は
以下のことができるようになったぞ。
- 壁にあたっても斜めに進めるようにする
- 矢印キーだけでなくWASDでも動けるようにする
- 回転せずに真横にスライドできるようにする(カニ歩き)
これでスムーズに
移動できるようになったね。おめでとう!スクラッチキャットも
自由にアジトを
捜査できるはずって、あれあれ、まだスクラッチキャットが
困っているぞ!
次回もチェックしてみよう。
グリフパッチさんの動画を参考にしています
今回のチュートリアルは
世界No.1スクラッチャーとして
名高いグリフパッチさんの
動画を
参考にしているよ。ただし
手順を
一部変えているところもあるんだ。