GameMaker Studio2は、2Dゲーム作りに向いている開発環境です。
で、アングリーバードみたいな、物理特性を持つ2Dゲームを割と簡単に作れる機能があります。
これは、Roomで物理機能on/offをセットできます。
ルームは、ゲームの一つのステージ画面みたいなものです。
で、ルーム設定でPhysicsをonにすると、そのルーム内は、物理特性を持った部屋(空間)になります。
これを部分的に使おうと思ったんですが、難しかった、というお話。
物理ONにすると、ルーム内に配置するオブジェクトほぼすべてに物理特性が付加されるので、
ゲーム内に入れ込むキャラとか、壁・モノなんか全てに物理パラメータをセットしないといけないので、少し面倒になります。
(スコア表示なんかのGUIは、別)
物理設定オフだと、普通にキャラクターなんかは、X,Y座標、移動スピード、方向、コリジョン判定を意識すればいいのですが、
物理設定オンにすると、移動スピードをセットするスピード(speed)、方向(direction)といったあらかじめ用意された便利なビルトインの変数が使えなくなります。コードが共用できません。
そのため、Room内で物理オンのオブジェクトと、無関係のオブジェクトを共存させるのが、難しいとわかりました(-_-;)
物理ONにすると、Roomウィンドウの1ピクセルが、実際の物理的距離の何mとしてセットするか、重力、表面の摩擦係数、体積、移動に関しては、トルクといった風にパラメータが変わって、複雑になります。リアルにはなるんですが、スーパーマリオとかロックマン風のゲームでこの物理ONをわざわざ使うのは、厳しいと思えました。やっぱり負荷も増えてfpsも低下するので。
現在のプロジェクトで使うのは、すんなり諦めましたが、他のプロジェクトで、物理ゲー作ってみるのも面白いかもなーと思いました。