トップページ > 記事閲覧
滑らかなカメラの動き
名前:たわし 日時: 2014/01/21 15:25

滑らかにカメラ移動をさせたいのですがsin波の使い方がわかりません 例えると、モンスターハンターやラチェット&クランクのカメラ移動をさせたいです プログラムはDXライブラリ、サンプルプログラム、3Dアクションの基本を基に作っています
メンテ

Page: 1 |

Re: 滑らかなカメラの動き ( No.1 )
名前:管理人 日時:2014/01/24 04:07

モンスターハンターやラチェット&クランクをプレイしたことが無いので どのようなものを想定されているかわかりませんが、とりあえず計算で求める カメラの座標に遅れて付いていくような仕組みを作ると滑らかな動きになります 簡単な例で、3Dアクションサンプルに以下のような変更を施すと効果が分かります まず struct CAMERA に以下のメンバー変数を追加します VECTOR SetEye ; VECTOR SetTarget ; 次に関数 Camera_Process の最後の行の // カメラの情報をライブラリのカメラに反映させる SetCameraPositionAndTarget_UpVecY( cam.Eye, cam.Target ) ; この部分を以下のように変更します // カメラの情報をライブラリのカメラに反映させる cam.SetEye = VAdd( cam.SetEye, VScale( VSub( cam.Eye, cam.SetEye ), 0.2f ) ) ; cam.SetTarget = VAdd( cam.SetTarget, VScale( VSub( cam.Target, cam.SetTarget ), 0.2f ) ) ; SetCameraPositionAndTarget_UpVecY( cam.SetEye, cam.SetTarget ) ; 『毎フレーム「計算で求めたカメラの座標」( 以降座標A )に、「SetCameraPositionANdTarget_UpVecY に渡すカメラの座標」( 以降座標B )を20%近づける』 という処理をしています( 尚、0.2f と書かれている箇所が『20%近づける』の部分なので、値を大きくすればそれだけ動きが硬くなり、 値を小さくすると更に動きが鈍くなります ) 因みに、壁にカメラがめり込むのを防ぐためにカメラが壁に当たった場合は即座に座標Bの座標を座標Aにしたり、 キャラクターが別ステージに移動するなどして座標がワープする場合も即座に座標Bの座標を座標Aにしたりと、 この『滑らかな動きにする処理』を実装する場合はしない場合よりやらなければならないことが増えます
メンテ
Re: 滑らかなカメラの動き ( No.2 )
名前:たわし 日時:2014/01/24 16:36

ご教授ありがとうございます 自分なりに無い頭をひねって考えたプログラムがあるのですが、 この場合でもやらなければならないことが増えますか? Camera_Processの中身の一角改造前 #define CAMERA_ANGLE_SPEED 0.05f // 旋回速度 // 「←」ボタンが押されていたら水平角度をマイナスする if( inp.NowInput & PAD_INPUT_LEFT ) { cam.AngleH -= CAMERA_ANGLE_SPEED ; // −180度以下になったら角度値が大きくなりすぎないように360度を足す if( cam.AngleH < -DX_PI_F ) { cam.AngleH += DX_TWO_PI_F ; } } Camera_Processの中身の一角改造後 int LCount = 0; // カメラ滑らか(L) if( inp.NowInput & PAD_INPUT_LEFT ){// 「←」ボタンが押されていたら水平角度をマイナスする if( LCount < 10 ){// カメラ滑らか(始)を始める LCount++; } }else{ if(LCount > 0){// カメラ滑らか(終)を始める LCount--; } if(LCount < 0){// カメラ滑らか(終)を止める LCount = 0; } } cam.AngleH -= sin(DX_PI_F/2/10*LCount)/20;//水平角度をマイナスする if( cam.AngleH < -DX_PI_F ){// −180度以下になったら角度値が大きくなりすぎないように360度を足す cam.AngleH += DX_TWO_PI_F; }
メンテ
Re: 滑らかなカメラの動き ( No.3 )
名前:管理人 日時:2014/01/24 22:34

いえ、その方法でしたらやることは増えません
メンテ
Re: 滑らかなカメラの動き ( No.4 )
名前:たわし(解決) 日時:2014/01/26 12:18

わかりました まだ、かじりかけなのでやることが増えない方法でいきたいと思います
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存