コミュニティアイコン プチコン 非公式コミュニティ プレイ日記

アバター
おちゃめ ◆jH1opV6FnGyx
2019/10/14 13:35
プチコン4用の1画面プログラムJH 第8弾「玉転がしゲーム JH」です。
コメントにて公開キーとモーションセンサーを使ったゲームを作る場合の注意点などを書いています。

コメント

アバター
おちゃめ 2019/10/14 13:36 ◆jH1opV6FnGyx
本体を傾けることでボールを転がし、道から落ちないようにゴールまで運んでいくタイムを競うゲームです。
私の自己最高タイムは6.26秒です。
公開キー【 4X2KX22NE 】

1画面プログラムJH規格(MAX336文字)の範囲内でボールの動きに拘りました。
画面を傾けて操作する場合にはジャイロセンサーを使うのが一般的ですが、プチコン4の場合は蓄積誤差による精度面の問題があるためプレイ中にGYROSYNCが必要になってしまいます。
こういった微妙な操作を要求するゲームではジャイロセンサーだと思ったような動きにはならないのです。
したがって、モーションセンサーを使用した方が良いと私は思います。

ACCEL関数の戻り値を何倍かしてボールの速度にしてしまえばこの手のゲームは簡単に作れますが、それだとボールの動きに違和感が出てしまいます。
そもそもモーションセンサーの戻り値というのは何を示しているのかという所から考える必要があります。
これは本体にかかっている加速度をX(左右)、Y(前後)、Z(上下)方向にどれだけかかっているかを示しています。
本体が静止している場合は加速度が0ではなく重力加速度gが加わっているのですが、それをX、Y、Z方向に分解した値が本体静止時のACCEL関数の戻り値となっています。(そのため3つの戻り値を合成すればgとなる)

ボールを自由落下させる場合はボールにかかる加速度はg(重力加速度)となるわけですが、坂道をボールが転がる場合は抵抗を無視すれば坂道の角度をθとした場合は、g sin θとなります。
本体静止時のACCEL関数の戻り値が重力加速度を1とした場合のg sin θの値を示しています。

モーションセンサーというのは加速度センサーなのだから加速度を示しているのは当然なのですが、最初に書いたような「ACCEL関数の戻り値を何倍かしてボールの速度にする」というのは加速度を速度で表してしまうためボールの動きに違和感が出てしまうわけです。
アバター
おちゃめ 2019/10/14 13:42 ◆jH1opV6FnGyx
速度というのは加速度を積分したもの(加速度は速度を微分したもの)なので、別の速度を示す変数を用意して1フレームごとにこの加速度を足していけば速度を求めることは簡単にできます。
これで良いのかというとそうではありません。
これだと抵抗をすべて無視した速度になっているためです。
分かりやすく言えば超ツルツルの床をボールを転がすような感じです。(実際は抵抗がない地面だと完全に滑るだけなので転がらないのですが、例えということで)
これだと一旦動き出したらボールを止めるのも困難になりゲームとして成立させるのが難しくなります。

そのため抵抗を考える必要があります。
転がるボールの場合は転がり抵抗を考える必要がありますが、これはボールや地面の素材や状態によって大きく変わります。
そのためこのゲームではゲームをプレイしながらちょうどいい感じの抵抗になるような値に設定しています。私が作っているゲームではおなじみの方法ですが。(私はポケットタイプのアナログゲームをイメージして画面表示と同じサイズの鉄球がフェルトのような布の上を転がっているのをイメージして抵抗値を調整した)
この抵抗の重要性はプログラム中に2か所ある「*.98」を消してプレイすれば一目瞭然だと思います。

これらの工夫や調整によってまるで実際にボールを転がしているような感覚を味わえるのではないかと思います。もちろん、プログラムが長くなっていいのであればさらにリアルさを増すことは可能なのですが、リアルにすることよりもゲームとして動作に違和感がなく楽しめる方が重要だと私は思います。
このゲームではそれが実現できていると思います。
ただし、1画面プログラムJHに収まることに拘り過ぎて自分が納得できないようなものになってしまうと無意味なのでこういう動きをさせたいという具体的なイメージを持つことが重要ですね。

コメントを書く

  • こちらは「プチコン3号」「プチコンBIG」など、プチコンシリーズに関する話題を扱ったコミュニティです
  • プチコンシリーズにまったく関係ない書き込みはご遠慮下さい。削除の対象となります
  • こちらにはその他のゲームや雑談のコミュニティはなく、作る予定もありません (ひとりで管理できないため)。ごめんなさい
  • ユーザー登録なしで書き込みができます
  • 秘密の合い言葉は成りすましの防止 (トリップ機能)、書き込みの編集時の本人認証に使用します
  • 秘密の合い言葉に他人に推測されやすい言葉、他サービスと同じパスワードは入力しないでください。
  • 書き込むと、投稿時に入力したお名前と秘密の暗号が記憶され、ログイン状態になります

- WEB PATIO -