1人でゲームが作れるように修行します。2 (487レス)
1人でゲームが作れるように修行します。2 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
297: 179 ◆SLG//siTD6 [sage] 2011/07/08(金) 00:03:46.32 ID:eIT69sd4 1、原点(0,0,0)でカメラの向き(角度X,角度Y,0)の回転行列を作る 2、1のマトリックスから カメラから原点までの距離(0,0, - 距離)をトランスフォーム 3、マウスでのミドルボタン平行移動は(移動量X ,移動量 Y , 移動量Z(0))で1のマトリックスからトランスフォーム 4、2と3を足す 5、カメラに各要素をセット(4のposition、角度X,角度Y,0) 3、の 移動量Zの部分はメタセコアではズーム代わりになってると思う。 多分メタセコアのはこんな感じだと思(・x・`) 色々違ってたらゴメンナサイ、と・・・。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/297
298: SGGK ◆6pZCoAtaxk [sage] 2011/07/09(土) 00:04:38.56 ID:HknH7n3m >>297 ありがとうございます。昨年末頃3Dの本を途中まで読んでて、 それに載っていた座標変換のことを忘れてました。 なのですぐにこれをコードに落とすのはまだ難しいけど、 プログラムのどこかでまた座標変換が必要になる頃には出来るように本を読み直してみます。 座標変換でやる場合、移動量Zを変えた時に注視点をどう変えるとズームになるかがまだ自信ないけど、 本読み直す時に解決出来ればと思ってます。 今日は、マウスの右ボタンドラッグ移動量から画面で回転させたい角度を計算するとこまで出来た。 あとは横回転はY軸に対して行い、縦回転は、注視点位置ベクトル(x、y、0)から カメラ位置ベクトルのZ成分を0にしたベクトルをマイナスして出来たベクトルを90度回転してできたベクトルに対して 回転すればいけるかもしれないというあやしい方法を考えてました。(汗 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/298
299: SGGK ◆6pZCoAtaxk [sage] 2011/07/10(日) 22:33:55.13 ID:fCX0gGeR 昨日の書き込みで間違いがあった。 縦回転は、注視点位置ベクトル(x、0、z)から カメラ位置ベクトルのY成分を0にした (略) が正解。自分のプログラムは垂直方向がY方向になってるのが理由。 メタセコイア風に画面内のフィールドを動かせるようになったような感じがする。 直接これをゲームに使う事はないかもしれないけど、いろいろ動かして、カメラの位置を検討するのに使えそう。 >>279でやった拡大方法だと、カメラの座標が変わらずに拡大縮小してしまうので、>>276氏の方法に変更。 次からはボールの動きに挑戦。179氏の>>297も意識して作業の予定。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/299
301: SGGK ◆6pZCoAtaxk [sage] 2011/08/01(月) 00:12:25.80 ID:MQtVPARw 時間かかってしまったけど、ボールの跳ね返り実装完了。 ボールの動きは月面歩行みたいなゆったりな動きだけど、これで良しとする。(数値の調整でなんとかできるかも) 179氏>>297のマトリックスを掛けていく方式を意識しつつも、今回も長文プログラムで対応。 (マトリックス作成がまだ自分には理解できてない様なので、勉強しないと無理そうだと今回実感した感じ。) 指定範囲外にボールが出そうになった時に跳ね返らずに壁に沿ってボールが動いたけど、 速度だけ反転して、位置を反転して範囲内に戻してなかったのが原因。 ボールが跳ね返り、跳ね返りの高さが少しずつ小さくなり、最後は転がって止まるようにするのに苦労。 はねてる時の加速度は下向きで、転がってる時の加速(摩擦による逆向きを表現したかった)は速度と逆向きにするというような 加速度の切り替えをどうするかに時間がかかった。 ボールの位置が低い時で判定しようとするとプログラム開始時点で条件を満たして止まってしまう。 放物線の最高点での速度は水平だと思うので、水平になった時のボールの高さがある低い数値より下の場合に、 ボール位置のy成分を0にして加速度を切り替えてみた。 水平になった時を知る方法は、速度ベクトル1と速度のy成分を0にしたベクトル2の角度がプラスマイナス1度以内ならほぼ水平と判断。 角度はベクトル1と2の内積というものからcosを計算して判定。 加速度が切り替わって速度が少しずつ小さくなるので、一定値より小さくなったら停止。 …という流れで実装出来て動いてるけど、今後も問題なく動作するかは未知な感じ。 次は>>252 >3.ラインを割った状態(スローイン、コーナーキック、ゴールキック、得点)を判定し、復帰処理をつくる。 に挑戦の予定 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/301
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.024s