今までにプチコン4で二次元の簡易的な物理演算(重量の概念を伴うボールの衝突処理)を行ってきましたが、これを三次元で行うことができないかと思うようになりました。当初、この演算は三角関数を多段に使用した複雑な計算だったのですが、後に内積を使用したシンプルな計算でも動くようになったこともあり、この内積を使って三次元の計算を行ってみようということになりました。そこから発展して完成したゲームが、今回の"BALLS AND PANELS 3D"です。テレビ番組などでもお馴染みの「ストラックアウト」のように、ボールをパネルに当てていくというルールになっています。
タイトル: BALLS AND PANELS 3D
公開キー: 4JBN3K2AE
VIDEO まず、今までに使用していたボール衝突の演算に使用していたユーザー関数(ベクトルXY成分の内積を使用したもの)に、新たにZ成分を加えた関数を作るところから始めました。プチコン4のプリセットのキャラであるサッカーボールを使って動かしてみます。すると大きな問題もなく、最初からそれらしく動いてくれました。
ただ、内積を使用したユーザー関数は、重量の概念を組み込んでいませんでした。ゲームとして幅を持たせるためには、重量の概念も組み込む必要があると考えていたのですが、以前二次元の方のユーザー関数にそれを組み込もうとして失敗したことがあり、今回は再チャレンジになります。改めて頭の中を整理、まずは重心速度を算出して、そこから各キャラの重心速度に対する相対速度を算出、それに2を掛けてさらに単位速度を掛けたものをもう一方のベクトルにそれぞれ加算…、という計算式を組み込みました。結果は成功。こちらの黒い背景の画像がその肝の部分になるユーザー関数です(クリックで拡大画像が表示されます)。
続いてゲーム性を持たせるため、「ストラックアウト」のような感じで、向こう正面にパネルを配置してみました。これにボールを当てて全て消去すれば面クリアという流れになります。
当初は解像度400x240で作っていたのですが、ボールをコントロールする上で自キャラの位置取りが重要なこともあり、奥の方でも位置が分かりやすくなるよう、途中から解像度を縦横倍の800x480に変更しました。そのため、プログラム中の画面表示に関わる色々な所に"*2"を追加して2倍に補正した形になっています。あと、左スティックを真上や真下に倒した場合(=方向ボタンの上下を押した場合)に、Z移動量を単純にプラスマイナスすると、見た目は斜めに移動するため、操作に違和感が出てしまいます。そのため、自キャラの動きに補正を入れて、スティックを真上、真下に倒した場合に、見た目もそれぞれ真上、真下に動くようにしてみました。
プログラムはこんな感じです。
プチコン4では今までに色々と技術的な事にチャレンジしてきました。個人的にプチコン4から初めて取り入れた技術はこんなものがあります。
・ボール同士の衝突計算(+重量の概念)
・ボールとグラフック面の衝突計算
・LMATRIXと回転行列で360度移動可能な擬似3D
・内積による衝突の力の計算
・ばねの動き
・磁力の概念
・三次元のボール同士の衝突計算(+重量の概念)
今回、三次元のボール衝突の演算がうまく行ったことから、技術的なことに関しては大凡「やり切った感」があります。これからは新しいアイデアとか作り込みの度合いを上げるとか、別の方向で伸ばせるところを伸ばしていければと思っています。
プチコン4関連記事
(リンク一覧) :
ロックバルーンポップ - プチコン4でシンプルな物理演算系風船割りゲーム /
ドレドの花摘みゲーム - プチコン4で「ヘッドオン」インスパイアなシンプルアクションゲーム /
神崎君のアドベンチャーランド - プチコン4で横スクロールアクションゲーム /
コンクリートゲーム2 - プチコン4で「崩す」ゲーム /
インテリ君の英語遊び 経営・管理部門編 - プチコン4でビジネス英語の学習ゲーム / ...
(記事連続表示)