ページ 11

3Dで壁に当たったときのカメラについて

Posted: 2014年1月24日(金) 19:24
by ptolemy
DXライブラリで3Dゲームを作っているんですが、壁に当たるとカメラが真上に動きます。
プレイヤーとカメラは、

コード:

if(playerX>700){
playerX=700;
}
のように範囲を決めています。

どうやったらカメラの角度を直せますか?

今、事情により添付できないのでお手数ですが、前に添付したものをDLお願いします。
http://dixq.net/forum/viewtopic.php?f=3&t=14398
テキストファイルがしっかり記載されていませんがこれから添付するときは修正しておきます。

Re: 3Dで壁に当たったときのカメラについて

Posted: 2014年1月24日(金) 21:36
by softya(ソフト屋)
ソースコードには
SetCameraPositionAndTarget_UpVecY( VGet( cameraX, sitenC, cameraZ ), VGet( target2X, siten2, target2Z ) );
しか見つけられなかったので、playerXとの関係がよく分かりません。

if(playerX>700){
playerX=700;
}
はプレイヤーとカメラを表している条件でもないようなので、これらだけだと情報不足で何とも答え様がありません。
もう少し詳しい情報をいただけますか。

Re: 3Dで壁に当たったときのカメラについて

Posted: 2014年1月24日(金) 23:42
by ptolemy
すみません。

2Dの時プレイヤーの座標をplayerにしていたので間違いました。

if(targetX>700){
targetX=700;
}
です。
700とは、フィールドの端の座標です。
カメラも同じようにしています。

本当ににすみません。

Re: 3Dで壁に当たったときのカメラについて

Posted: 2014年1月24日(金) 23:49
by softya(ソフト屋)
プログラムコードを見る限りtargetX(target2X?)が700まで行ったらいきなり上をカメラが真上になる状況になると思えないのすでが、その状況時のcameraX, sitenC, cameraZ ならびにtarget2X, siten2, target2Z の値を教えてください。

Re: 3Dで壁に当たったときのカメラについて

Posted: 2014年1月24日(金) 23:55
by ptolemy
上にいくというかカメラがおかしな方を見るのは確かです。

今、PC使えないのでまた明日書き込みます。

Re: 3Dで壁に当たったときのカメラについて

Posted: 2014年1月24日(金) 23:58
by softya(ソフト屋)
ptolemy さんが書きました:上にいくというかカメラがおかしな方を見るのは確かです。

今、PC使えないのでまた明日書き込みます。
勘で書きますが、cameraXとtarget2Xの補正がズレるんじゃないかという気がしますが。

Re: 3Dで壁に当たったときのカメラについて

Posted: 2014年1月25日(土) 17:39
by ptolemy
[壁に当たる前]
cameraX=220
sitenC=276
cameraZ=150
target2Z=345
siten2=0
target2Z=279


[壁と接触しているとき]
cameraX=220
sitenC=294
cameraZ=150
target2Z=726
siten2=0
target2Z=279


でした。

Re: 3Dで壁に当たったときのカメラについて

Posted: 2014年1月25日(土) 18:20
by softya(ソフト屋)
やはりcameraXとtarget2Z(target2X?)がずれているので、ターゲットの座標からcameraXを相対位置で計算すべきかと思います。
浮動小数点の誤差かプログラムのバグかはソースコードがないので何とも言えませんが。

Re: 3Dで壁に当たったときのカメラについて

Posted: 2014年2月05日(水) 23:13
by ptolemy
毎度すみません。返信遅れました。
PCの水冷化をしていて起動ができませんでした。

本題についてなのですが、
playerの座標とcameraの座標が100離れているのに
壁に当たったとき同じ座標になるように書いてました。

それで、カメラの座標が、真上に来ていました。

しかし、当たっているときXとZが固定されているので、
回転のキーを押してもモデルだけ回転して
カメラが回転しなくなりました。

どうしたら良いのでしょうか?

Re: 3Dで壁に当たったときのカメラについて

Posted: 2014年2月05日(水) 23:17
by softya(ソフト屋)
>しかし、当たっているときXとZが固定されているので、
>回転のキーを押してもモデルだけ回転して
>カメラが回転しなくなりました。

プログラムを見ないと何とも答えようがないです。
当たっている時に固定しなければしけない理由が分からないからです。

Re: 3Dで壁に当たったときのカメラについて

Posted: 2014年2月08日(土) 18:11
by ptolemy
すみません。

訂正で壁に触れているときではなく壁に進みながら回転するとおかしくなります。

コード:

if(targetX>700){
targetX=700;
}
if(cameraX>600){
cameraX=600;
}
のようにしているので進みながらの状態では、固定されているということです。

Re: 3Dで壁に当たったときのカメラについて

Posted: 2014年2月08日(土) 19:24
by softya(ソフト屋)
私が前に言ったように、targetXからの相対座標でカメラを管理してはどうでしょうか?
常に
cameraX = targetX - 100;
では何がマズイのでしょうか?
targetX中心の回転を考慮するなら三角関数で相対位置を計算すれば良いだけです。

Re: 3Dで壁に当たったときのカメラについて

Posted: 2014年2月19日(水) 20:43
by ptolemy
すいません。返信遅れました。

相対座標で考えればいいのですね。常に-100になるようにします。