3Dで壁に当たったときのカメラについて
3Dで壁に当たったときのカメラについて
DXライブラリで3Dゲームを作っているんですが、壁に当たるとカメラが真上に動きます。
プレイヤーとカメラは、 のように範囲を決めています。
どうやったらカメラの角度を直せますか?
今、事情により添付できないのでお手数ですが、前に添付したものをDLお願いします。
http://dixq.net/forum/viewtopic.php?f=3&t=14398
テキストファイルがしっかり記載されていませんがこれから添付するときは修正しておきます。
プレイヤーとカメラは、 のように範囲を決めています。
どうやったらカメラの角度を直せますか?
今、事情により添付できないのでお手数ですが、前に添付したものをDLお願いします。
http://dixq.net/forum/viewtopic.php?f=3&t=14398
テキストファイルがしっかり記載されていませんがこれから添付するときは修正しておきます。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 3Dで壁に当たったときのカメラについて
ソースコードには
SetCameraPositionAndTarget_UpVecY( VGet( cameraX, sitenC, cameraZ ), VGet( target2X, siten2, target2Z ) );
しか見つけられなかったので、playerXとの関係がよく分かりません。
if(playerX>700){
playerX=700;
}
はプレイヤーとカメラを表している条件でもないようなので、これらだけだと情報不足で何とも答え様がありません。
もう少し詳しい情報をいただけますか。
SetCameraPositionAndTarget_UpVecY( VGet( cameraX, sitenC, cameraZ ), VGet( target2X, siten2, target2Z ) );
しか見つけられなかったので、playerXとの関係がよく分かりません。
if(playerX>700){
playerX=700;
}
はプレイヤーとカメラを表している条件でもないようなので、これらだけだと情報不足で何とも答え様がありません。
もう少し詳しい情報をいただけますか。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: 3Dで壁に当たったときのカメラについて
すみません。
2Dの時プレイヤーの座標をplayerにしていたので間違いました。
if(targetX>700){
targetX=700;
}
です。
700とは、フィールドの端の座標です。
カメラも同じようにしています。
本当ににすみません。
2Dの時プレイヤーの座標をplayerにしていたので間違いました。
if(targetX>700){
targetX=700;
}
です。
700とは、フィールドの端の座標です。
カメラも同じようにしています。
本当ににすみません。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 3Dで壁に当たったときのカメラについて
プログラムコードを見る限りtargetX(target2X?)が700まで行ったらいきなり上をカメラが真上になる状況になると思えないのすでが、その状況時のcameraX, sitenC, cameraZ ならびにtarget2X, siten2, target2Z の値を教えてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: 3Dで壁に当たったときのカメラについて
上にいくというかカメラがおかしな方を見るのは確かです。
今、PC使えないのでまた明日書き込みます。
今、PC使えないのでまた明日書き込みます。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 3Dで壁に当たったときのカメラについて
勘で書きますが、cameraXとtarget2Xの補正がズレるんじゃないかという気がしますが。ptolemy さんが書きました:上にいくというかカメラがおかしな方を見るのは確かです。
今、PC使えないのでまた明日書き込みます。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: 3Dで壁に当たったときのカメラについて
[壁に当たる前]
cameraX=220
sitenC=276
cameraZ=150
target2Z=345
siten2=0
target2Z=279
[壁と接触しているとき]
cameraX=220
sitenC=294
cameraZ=150
target2Z=726
siten2=0
target2Z=279
でした。
cameraX=220
sitenC=276
cameraZ=150
target2Z=345
siten2=0
target2Z=279
[壁と接触しているとき]
cameraX=220
sitenC=294
cameraZ=150
target2Z=726
siten2=0
target2Z=279
でした。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 3Dで壁に当たったときのカメラについて
やはりcameraXとtarget2Z(target2X?)がずれているので、ターゲットの座標からcameraXを相対位置で計算すべきかと思います。
浮動小数点の誤差かプログラムのバグかはソースコードがないので何とも言えませんが。
浮動小数点の誤差かプログラムのバグかはソースコードがないので何とも言えませんが。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: 3Dで壁に当たったときのカメラについて
毎度すみません。返信遅れました。
PCの水冷化をしていて起動ができませんでした。
本題についてなのですが、
playerの座標とcameraの座標が100離れているのに
壁に当たったとき同じ座標になるように書いてました。
それで、カメラの座標が、真上に来ていました。
しかし、当たっているときXとZが固定されているので、
回転のキーを押してもモデルだけ回転して
カメラが回転しなくなりました。
どうしたら良いのでしょうか?
PCの水冷化をしていて起動ができませんでした。
本題についてなのですが、
playerの座標とcameraの座標が100離れているのに
壁に当たったとき同じ座標になるように書いてました。
それで、カメラの座標が、真上に来ていました。
しかし、当たっているときXとZが固定されているので、
回転のキーを押してもモデルだけ回転して
カメラが回転しなくなりました。
どうしたら良いのでしょうか?
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 3Dで壁に当たったときのカメラについて
>しかし、当たっているときXとZが固定されているので、
>回転のキーを押してもモデルだけ回転して
>カメラが回転しなくなりました。
プログラムを見ないと何とも答えようがないです。
当たっている時に固定しなければしけない理由が分からないからです。
>回転のキーを押してもモデルだけ回転して
>カメラが回転しなくなりました。
プログラムを見ないと何とも答えようがないです。
当たっている時に固定しなければしけない理由が分からないからです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 3Dで壁に当たったときのカメラについて
私が前に言ったように、targetXからの相対座標でカメラを管理してはどうでしょうか?
常に
cameraX = targetX - 100;
では何がマズイのでしょうか?
targetX中心の回転を考慮するなら三角関数で相対位置を計算すれば良いだけです。
常に
cameraX = targetX - 100;
では何がマズイのでしょうか?
targetX中心の回転を考慮するなら三角関数で相対位置を計算すれば良いだけです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: 3Dで壁に当たったときのカメラについて
すいません。返信遅れました。
相対座標で考えればいいのですね。常に-100になるようにします。
相対座標で考えればいいのですね。常に-100になるようにします。