お久しぶりです。
最近3Dプログラムに挑戦しているのですが、
躓いてしまったので質問させていただきに来ました。
今、本家DXライブラリのサンプルプログラム(迷路を3Dで表示)を参考に
ウィザードリィのような3Dダンジョンゲームを作っているのですが、
壁を目の前でとらえた時の圧迫感が気になるので、それを改良しています。
上記のサンプルプログラムでは、カメラを中心に移動しているように感じました。
カメラ=自キャラといったような感じでしょうか・・・
(間違っていたらごめんなさい)
そこで、操作可能な架空のキャラクター(見えませんが)を置き、
それをカメラで追うようなプログラムを作ろうと考えています。
このようにすることによってカメラの位置が手前にずれるので、
壁の圧迫感が解消されるのではないかと思いました。
しかし、このカメラワークがうまくいきません。
旋回したあとに、前進・後退をするとカメラの動きがおかしくなってしまいます。
ソースコードとその他必要なものを添付しておきますので、
一度実行してみてください。
3Dプログラムは今回が初めてなので、理解が不十分な部分が多いですが、
どうかお力を貸してください。
開発環境:VC++2008EE
OS :WindowsXP
言語 :C言語
ライブラリ:DXライブラリ
3Dプログラム
Re:3Dプログラム
すいません、添付みてませんが、時間ないので軽くアドバイスです。
そのような簡単なカメラワークなら次のステップでいけます。
・プレイヤーの目の位置を計算します。
・目線ベクトルを計算します。
・目線ベクトルを負の値でスケール倍して、プレイヤーの目の位置に加算したベクトルがカメラの位置です。
・カメラの位置から、プレイヤーの目の位置を注視点に設定。(DXライブラリには、カメラ位置と注視点で指定できる関数があります。)
完成。
*追記
もっと高度で、スムーズな動きをお求めの場合は、
パトーキンさんのモンハン風プログラムが参考になると思います。
(ニコニコで検索するとソースコードも出るかと。)
そのような簡単なカメラワークなら次のステップでいけます。
・プレイヤーの目の位置を計算します。
・目線ベクトルを計算します。
・目線ベクトルを負の値でスケール倍して、プレイヤーの目の位置に加算したベクトルがカメラの位置です。
・カメラの位置から、プレイヤーの目の位置を注視点に設定。(DXライブラリには、カメラ位置と注視点で指定できる関数があります。)
完成。
*追記
もっと高度で、スムーズな動きをお求めの場合は、
パトーキンさんのモンハン風プログラムが参考になると思います。
(ニコニコで検索するとソースコードも出るかと。)

Re:3Dプログラム
>Maさん
サンプルプログラムをもう一度読み直してみました。
おそらく、Maさんのおっしゃる手順をふんでるような感じはしました。
(まちがっていたらごめんなさい)
モンハン風プログラムを見てみました。
やはり生半可な知識じゃ3Dの実装はむずかしいですね^^;
もっと勉強しておくべきでしたorz
>Justyさん
なるほど。
本家にアップされていた2つのサンプルプログラムを単純に組み合わせて作っただけなので、
いまいち理解が不十分でした。
もういちど見直して修正してみます。
サンプルプログラムをもう一度読み直してみました。
おそらく、Maさんのおっしゃる手順をふんでるような感じはしました。
(まちがっていたらごめんなさい)
モンハン風プログラムを見てみました。
やはり生半可な知識じゃ3Dの実装はむずかしいですね^^;
もっと勉強しておくべきでしたorz
>Justyさん
なるほど。
本家にアップされていた2つのサンプルプログラムを単純に組み合わせて作っただけなので、
いまいち理解が不十分でした。
もういちど見直して修正してみます。
Re:3Dプログラム
プログラムを再度見直して修正したところ、無事に動作してくれました。
左右旋回を行う部分で少し勘違いしていたようです^^;
プログラムの処理がいまいちまだ理解していませんがorz
やっぱり3Dは難しいですね・・・
Maさん、Justyさん、忙しい中アドバイスしていただきありがとうございました。
またどこかで躓くことがあると思うので、その時はよろしくお願いします。
左右旋回を行う部分で少し勘違いしていたようです^^;
プログラムの処理がいまいちまだ理解していませんがorz
やっぱり3Dは難しいですね・・・
Maさん、Justyさん、忙しい中アドバイスしていただきありがとうございました。
またどこかで躓くことがあると思うので、その時はよろしくお願いします。