スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

物理演算システムの改善と、現在の状況報告とか

現在の状況報告をします。
ゲーム制作に関しては、アクションゲーム制作を優先的に実施しています。


■現在の予定
・[進行中]アクションゲームの物理演算処理修正
・[中断]パズルゲーム改良版作成
・[中断]ローグライクゲーム制作
・[中断]アプリ制作
・[中断]シミュレーションゲーム制作
・[時々進行]3Dモデルアニメーション付けソフト?作成

やりたい事に対して、手が追いついてない感じです。
スケジュール管理をどうにかしないと…。助けて(´・ω・`)

とりあえず、
自然消滅したり、やる気がなくなる事は無いので、
その一点だけはご安心を。



次に物理演算システムについて。
根幹から問題があった事が判明したので、
"間違っていた根幹をベースに作成していたソース"を削除/修正する事になりました。

何が間違っていたかというと、衝突判定ですね。

例えば、坂道の末端辺りに主人公が落下するとします。

【参考画像】
20140828_1.jpg

すると、坂道が主人公の頭上にワープします。
【参考画像】
20140828_2.jpg

一体、何が起こったか。


判定処理は下記の様になっています。
【3】以降は、問題が無くなるまでループして行われます。(再起関数)

【1】主人公の落下処理
【2】主人公と、床の衝突判定を実施
【3】めり込みを解消する方向(上)に、主人公を移動
【4】主人公に重なっているオブジェクトを、めり込みを解消する方向(上)に移動


例えば下記の状態でCと床の判定をした場合、
Cを上方向に修正、その修正したCとBが重なるのでBを上方向に修正、
更に修正したBとAが重なるので、Aを上方向に修正 ⇒ 床の上にCBAが乗っている様に見える
---------
A
B
C
床床床
---------
という感じになります。


上手く行けば問題は無いのですが、
衝突判定を総当たりにしてた為、
判定する順番(オブジェクトが登録された順番)によって、結果が変わるという
非常に面倒な不具合が発生しました。
※オブジェクトA,B,C,Dの順に登録されている場合、
AB、AC、BC、BD、CDの順番で判定が行われます。


簡単にいえば、主人公と坂道を判定して、
主人公を坂道の上に来るようにすればいい
所を、
先に主人公と床を判定してるもんだから、おかしな結果が出たのです。


あーなんてこった。
物体が移動する場合、
最も近い距離で衝突する物体から
衝突判定をすべき
だった。

ローグライクやシューティングゲームなんかでは、
とりあえず全部判定 ⇒ 衝突していれば移動不可、死ぬ
という風に、総当たりでやってたから、こんな単純な事に気付かなかった。

物理演算においては、"衝突判定の順番"も重要でした。
こんな単純なミスに数か月単位で苦悶してたとか愚の骨頂。

とりあえず、この問題については、
オブジェクトの右端、左端、上端、下端をそれぞれ昇順に並べて登録する様にしました。

----------------------------------
縦  横
64×64の正方形を、(0, 0)に配置
64×320の長方形を、(0, 100)に配置
480×64の長方形を、(-50, -50)に配置

RightList: 1363319
LeftList: -5000
TopList: -500100
BottomList: 63163429

----------------------------------

で、例えば64×64の正方形が下方向に移動する場合、
自分の登録されている位置から末端にかけて検索し、
衝突していれば移動距離を修正します。
※検索は、上辺が下辺よりも大きくなった時点で終了。

■具体例
64×64の正方形の上辺情報は、TopListの添え字1の所に格納されており、
下方向へ10移動しようとしているとします。

この場合、添字[1]から添字[5]に向かって検索していきます。
そして、下辺+移動速度 > TopListの値かつ、衝突しているものが無いか探します。

[0]:-50
[1]:0
[2]:70
[3]:150
[4]:200
[5]:240

移動速度を足すと63 + 10 = 73、
つまり、添字[1]以降で73以下の値があった場合、衝突判定を行います。
また、上辺の位置が73以上の値([3]の150)と遭遇した際は、
(昇順に並べられている為)、それ以上検索しても73以下の値は無いので、検索を終了します。

【参考画像】
20140828_3.jpg

とりあえず、衝突判定に関しては(今の所)問題ないので、
キャラクターの仮画像を作って、動作確認しています。

歩き、小走り、走り、ジャンプ、しゃがみ、壁擦り、ジャンプ攻撃、攻撃とか、
色々モーション多すぎて大変。
問題なければしっかりしたキャラクター画像に差し替えます。

20140828_4.jpg


画像が優に100枚を超えそうな予感。
少しだけ、アニメ制作会社の大変さが分かった気がした。
(比較にならんぐらい忙しそうだ…)


余談ですが、最近このBGMを聞いています。
わグルま!という最近サービス終了してしまったゲームのBGMなのですが、
とても不思議な雰囲気で、落ち着くのです。

スポンサーサイト
コメント
コメントの投稿
管理者にだけ表示を許可する



上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。