Re: 3Dアクションの基本について ( No.1 ) |
- 名前:いっち 日時:2011/08/06 21:58
個人的な見解として回答させていただきます。
> 1.void Input_Process( void )
単に構造化しているだけだと思うので、main関数の中に直接書いても問題ありません。
> 2.void Player_Process( void )
Chara.x の 走るモーションはローカル座標の原点から Z 方向に移動してしまうので、
その場で走らせるための補正だと思います。(ModelViewerでご覧頂けばよくわかると思います)
> 3.void Player_Move( VECTOR MoveVector )
キャラのスムーズな移動のためだと思います。(小さな段差を無視するという効果もあります)
この処理を行わないと足元のポリゴンが壁と判定されてしまい、崖から落ちなくなります。
使用するモデルのスケールにもよりますが 0.1f ぐらいでも問題ないと思います。
> 4.void Player_Move( VECTOR MoveVector )
当たり判定を行うポリゴンの数が多ければ多いほど処理に時間がかかりますが、
少なくしすぎると判定が甘くなります。
恣意的というよりは、動作環境や求めるクオリティに合わせて決めるべき値だと思います。
> 5.void Player_Move( VECTOR MoveVector )
MV1CollCheck_Sphere の部分を MV1CollCheck_Capsule に置き換えることは可能だと思います。
ただ、このサンプルでは当たり判定による位置補正を行い、再度当たり判定を行うという流れなので、
最初にざっくりとした範囲のポリゴンのリストを取得して、
その後、キャラぴったりの範囲で当たり判定を行なっているのではないでしょうか。
(このサンプルでは床方面のポリゴンを取りすぎているような気はしますが・・・)
|
Re: 3Dアクションの基本について ( No.2 ) |
- 名前:管理人 日時:2011/08/07 00:43
いっちさんのご回答の方が良い感じですが、
既に書いてしまっていたので私もご回答します
>1
ご指摘の通りプログラム実行時の具体的な意味( 効果 )はありません
Input_Process を実際に使っているところを見ていただくと分かると思いますが、
処理のまとまり毎に関数を用意してメインループの中では具体的な処理が ScreenFlip 以外使われていません
当然一箇所でしか使わない関数は実処理的には関数化する必要はないので、あくまでメインループに具体的な処理を
沢山書かないために関数化しただけです
>2
「// ルートフレームのZ軸方向の移動パラメータを無効にする」の{ }の部分をコメントアウトしてみてください
恐らく意味が分かると思います
DxChara.x の歩いたり走ったりするアニメーションにはルートフレーム( フレーム番号 2番 )に
Z軸方向に移動するキーが打たれています
これをそのままに実際にプログラムでアニメーションを使用してしまうとプログラムで行っている
座標移動に加えてアニメーションに入っている座標移動もされてしまいます
なので、この部分でアニメーションに入っている座標移動を無効にしています
>3
プレイヤーが崖に向かって進んで行った際に
崖の側面部分の垂直なポリゴンが壁として判定されないように自分が立っている
ポリゴンより 1.0f 以上高いポリゴンのみを壁として処理するようにしています
>4
はい、 PLAYER_MAX_HITCOLL の define では 2048 となっていますが、この数値を変更することで
限界数を変えることができます
基本的に限界数を超えてポリゴンを配列に加えられない状況になった場合は正常なコリジョン処理が
行えないことを意味しますので、数値はコリジョンモデルに応じて余裕のある値にしておく必要があります
>5
プレイヤーサイズ分だけでは壁に衝突して壁から押し出された場合、押し出された後に再度行われる
壁との当たり判定の際に、再度プレイヤーの周囲にあるポリゴンを列挙しなおす必要が発生してしまいます
なので、1フレームで移動距離分だけ大き目の範囲にあるポリゴンを調べておいて
壁による押し出し処理が行われた後に改めて周囲にあるポリゴンを調べ直す必要が無いようにしています
ただ、サンプルのプログラムは実際のポリゴンとの判定ではプレイヤーサイズのカプセルで行っていますので
1フレームでプレイヤーのサイズ以上に移動してしまうと壁をすり抜けるという現象が発生します
( これを避けるためには「移動距離 ÷ プレイヤーのサイズ」の回数分だけ壁との当たり判定を行う等の対処が必要です )
|
Re: 3Dアクションの基本について ( No.3 ) |
- 名前:ぱらりら(解決) 日時:2011/08/08 08:30
ご回答ありがとうございます。
勉強させていただきました。
|