詰みポイント発生

DSsec
記事: 0
登録日時: 14年前

詰みポイント発生

投稿記事 by DSsec » 14年前

遊泳モーション中のキャラが移動するとき、カメラを背に向けるようにキャラの向きが変わるプログラムを組んでます。キャラの移動時にカメラがキャラの背中を追いかける形になります。

CODE:

angleh = acos(VDot(VGet(0.0f,0.0f,1.0f),VGet(cam.dir.x,0.0f,cam.dir.z)));
	if(cam.dir.x<0)
		angleh = -angleh;

anglev = acos(VDot(cam.dir,VGet(cam.dir.x,0.0f,cam.dir.z)));
	if(cam.dir.y<0)
		anglev = -anglev;
中略
MV1SetRotationXYZ(hmodel,VGet(anglev,angleh+PHI_F,0.0f));
このような感じでやってます。
cam.dir:カメラ方向ベクトル(cam.dir = カメラ注視点位置ベクトル ― カメラ位置ベクトル)
anglev:垂直角度
angleh:水平角度

しかしこれでやってると、カメラを上下に動かしたとき、キャラが水平角度においておかしくなることがあるんですよね。x軸に平行にキャラが向いてる場合は全く問題ないのですが、z軸に平行だと上下に傾けば傾くほどキャラが左右にやや向いてしまう。カメラ方向ベクトルのx成分がマイナスだと左に、プラスだと右に向く。そんな症状です。
原因は何だろう…

簡単にまとめると、「スペースキー押したらカメラ方向ベクトルの方向に遊泳中のキャラが向くようにしたい(ただし三次元空間)」ってことですね。
最後に編集したユーザー DSsec on 2011年8月04日(木) 00:41 [ 編集 3 回目 ]

DSsec
記事: 0
登録日時: 14年前

Re: 詰みポイント発生

投稿記事 by DSsec » 14年前

自己解決しました