トップページ > 過去ログ > 記事閲覧
アニメーション座標での当たり判定
名前:ジュンヤ 日時: 2013/03/19 01:30

いつもお世話になってます。 今回は再生中のアニメーションの座標を使って、当たり判定を行いたいと思ってます。 アニメーション中の座標から、当たったことを判定するところまではできてるのですが、 ポリゴンの壁に当たった時に壁にくっついて固定されてしまいます。 アニメーション自体は前進歩行して、少しすると後退するアニメーションで、 壁に当たっている時は前に進めないようにし、壁がなく後退する時には 進めるようにしたいです。 具体的には、以下のプログラムでZキーを押すとポリゴンを消せるので、 ポリゴンに当たった時にZキーを押して消します。 この時に当たった場所で、座標が固定されてしまうのですが、 進めるようにしたいと思ってます。 それと消さない状態で待っていると、後ろに進むアニメーションが始まるはずなんですが、 座標が固定されてしまってるので、これも何とかしたいです。 よろしくお願いします。 ttp://www48.atpages.jp/happynetwork/project/Sample.zip

Page: 1 |

Re: アニメーション座標での当たり判定 ( No.1 )
名前:いっち 日時:2013/03/20 02:54

モデルを拝見しました。どのような事情があるのかは分かりませんが、 歩行のアニメーションでモデルの見た目上の座標が移動してしまうのはあまり良いアイデアとは思えません。 移動しないようにすることは出来ないのでしょうか?(ついでに前進と後退のアニメーションも別々にしたほうが良いと思います) 出来ないようでしたら、管理人さんが以下のサンプルの Player_Process 内で行っているように > ttp://homepage2.nifty.com/natupaji/DxLib/program/dxprogram_3DAction.html アニメーションの移動成分を無効にした上で、モデルの移動は完全にプログラムから制御することをお勧めします。
Re: アニメーション座標での当たり判定 ( No.2 )
名前:ジュンヤ 日時:2013/03/23 21:08

いっちさんご回答ありがとうございます。 私も以前は、3DActionのサンプルの様にアニメーション座標は移動させないで、 プログラムから制御する方法でやっていました。 しかし今回は3D格闘ゲームで使用するアニメーションを作っていまして、 その時にパンチやキックなどの連続技で移動や停止を繰り返す複雑なアニメーションや 投げ技がありまして、それらをすべてプログラム上で計算するのは 難しいので、アニメーション座標を使うことにしました。 現状では地形との当たり判定以外は実装できているので、 直進方向での壁を貫通するのさえ止められれば、ゲームに組み込めそうなんですが・・
Re: アニメーション座標での当たり判定 ( No.3 )
名前:いっち 日時:2013/03/21 22:08

モデルが当たり判定後前進しなくなるのは MV1SetFrameUserLocalMatrix を使用して座標を固定しているためです。 (なので、当たり判定も最初の1回以外はヒットしていません) Source.cpp の 193行目 辺りに以下の行を追加すればとりあえず動くようにはなると思います。 > else { > MV1ResetFrameUserLocalMatrix( ModelHandle, 1 ) ; > }
Re: アニメーション座標での当たり判定 ( No.4 )
名前:ジュンヤ 日時:2013/03/23 21:09

色々試行錯誤してみましたが、アニメーション座標を操作するのは難しいので、 アニメーション座標が壁から突き抜けているベクトルをもとめて その分だけプログラム上の座標から引いてやるという方法で なんとか垂直な壁に限っては止める事ができました。 今回もアドバイスありがとうございました。

Page: 1 |