2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【GameMaker:Studio2】ミニゲームを作るチュートリアル (Part.2)

Last updated at Posted at 2018-11-24

GameMakerStudio2でミニゲームを作るチュートリアルの続きです。
前回→【GameMaker:Studio2】ミニゲームを作るチュートリアル (Part.1)

床を作る

たこ焼きが画面外に消えないように床を作ってみます。

ResourcesからObjectsを右クリックして、Create Objectを選びます。
032.png
(Workspaceの何もないところを右クリックする方法でも問題ありません)

新しいObjectのウィンドウが表示されたので、Nameを "objWall" に変更して、Spriteの+アイコンからスプライトを追加します。
033.png

新しいSpriteのウィンドウが表示されたので、Nameを "sprWall" に変更して、「Import」をクリックします。
034.png

wall.png を選んで「開く」を選びます。
035.png

Resourcesから Rooms > room0 をダブルクリックして、再び Roomエディタを開きます。
036.png

objWall を Room内にドラッグ&ドロップして配置します。
037.png

これを繰り返して objWall を一番下に並べますが、なかなか面倒です。
そこで、Altを押しながらドラッグすると連続して配置することができます。
038.png

間違えてはみ出した場合は、選択してDeleteキーで削除したり、Ctrl+Zでやり直したりします。

このようになりました。
039.png

では実行して動作を確認します。(F5キー、または左上の三角ボタン(▷)をクリック)
028.png

しかし、たこ焼きは壁に当たらずに画面外に出て行ってしまいます。
040.png

これは衝突判定が定義されていないためとなります。
衝突判定はイベントで定義します。

床との衝突判定を作る

Resources から objTako をダブルクリックするなどして、objTako のエディット画面を表示してください。
041.png

Eventsボタンを押して、Events(イベント一覧)を表示し、Add Event > Collision > objWall を選びます。
042.png

これは、objWall との衝突判定を定義するイベントとなります。
たぶん、ウィンドウが見切れていると思うので、ウィンドウの上部のバーをダブルクリックしてウィンドウが画面内に入るようにします。
043.png

Toolboxの下にある検索ウィンドウに "move" と入力します。
すると、Movementという移動に関するアイコンが表示されます。
そこから 「Set Speed」 アクションアイコンを選び…
044.png

中央にドラッグ&ドロップします。
045.png

すると、Set Speed がイベントに追加されます。
046.png

初期値の場合、objWall にぶつかったら、速度が 0 になる、という設定になっています。
ひとまずこのまま、F5 (または左上の三角アイコン(▷)) で実行します。
028.png

実行してたこ焼きが床に接触すると、ズブズブ埋まっていく動きをします。
確かに動きは変わりましたが、不自然ですね…。
047.png

これは、objWall がめり込みを許可してしまっているためとなります。
Resources から Objects > objWall をダブルクリックして、objWall のエディタを開きます。
048.png

objWall のエディタから、「Solid」の項目にチェックを入れます。
049.png

これにより、衝突イベントが発生した場合、自動で押し返しを行いめり込みが起きなくなります。

では、再び実行してみます。
050.png

ちゃんと床の上で止まるようになりました。

続けてたこ焼きをバウンドさせてみます。
Resources から Objects > objTako をダブルクリックして、objTako のエディタを表示し、
objWall との衝突イベントに定義した 「Set Speed」アクションアイコン の設定値を以下のように修正します。

  • Type: Vertical
  • Speed: vspeed * -1
  • Relative: チェックを入れない

051.png

これは垂直方向 (Vertical) の速度に対して、-1を掛けることでバウンドの動きを定義したものとなります。
Speed の項目に vspeed という文字がありますが、これはオブジェクトが持つ垂直移動の速度の現在値です。
例えば、vspeedが 10 であれば、この処理を通すことで vspeed の値は -10 となり、逆に移動することになります。

では、実行して動作を確認してみます。
たこ焼きが床でバウンドする動きになったと思います。

ちなみに、実行したまま放置すると、どんどん速度が上がり、画面上部に飛び出してしまいますが、これは床との衝突により失われる速度がまったくないという計算をしているからです。
ですので、例えば先ほどの「Set Speed」アクションアイコンの Speed値を 「vspeed * 0.8」 に修正すると
052.png

速度が 0 に収束していき、しばらく待つと床で停止する挙動となります。(正確には床の近くで少し飛び跳ね続けますが…)

続けて、たこ焼きを横に移動するようにしてみます。
Resources から Objects > objTako をダブルクリックして、objTakoのエディットウィンドウを開きます。
Events から Create をダブルクリックして、Createイベントを表示します。

Toolbox に "random" と入力して、Random カテゴリ内の 「Get Random Number」アクションアイコンを選び…
053.png

それを中央にドラッグ&ドロップします。設定値は以下のように設定します

  • Type: Decimal
  • Minimum: -10
  • Maximum: 10
  • Target: hspeed
  • Temp: チェックを入れない

054.png

これは、objTakoが持つ設定値「hspeed (水平方向の速度)」に対して、-10~10 の値をランダムで設定する、というものになります。
TypeがDecimalとなっていますが、これは小数点の値も許可するものとなります。

これで実行してみると、たこ焼きが左右に動き出して画面外に出て行ってしまいます。
なので、横の壁を作ることにします。

次回に続く…
【GameMaker:Studio2】ミニゲームを作るチュートリアル (Part.3)

2
3
9

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?