C#, C♯, C#相談室 Part46
at TECH
[
2ch
|
▼Menu
]
■コピペモード
□
スレを通常表示
□
オプションモード
□このスレッドのURL
■項目テキスト
800:デフォルトの名無しさん 08/06/07 15:15:33 p0 : 初期位置 v0 : 初期速度 g : 重力加速度(約-9.8) p(t) : 初期時刻からの経過時間tの時の位置 p(t) = p0 + v0*t + 0.5*g*t*t 801:デフォルトの名無しさん 08/06/07 15:23:50 つかいつの間に重力加速度の話になったんだ 802:デフォルトの名無しさん 08/06/07 15:44:46 >>800 それをwhileに入れれば出来そうだけど、ジャンプ中も左右移動したい 803:デフォルトの名無しさん 08/06/07 15:46:52 なんかこのスレ方向性分かんなくなってきたなw 804:デフォルトの名無しさん 08/06/07 15:55:23 ジャンプ中左右移動したいなら new Timer( () => { 位置更新 描画 }); void KeyDown(...) { switch(key) case ←: 左にちょっとずらす ... } こんな感じで出来るのかな 普通は while(true) { 入力ゲット 位置更新 描画 時間が来るのを待つ } こんな感じなのかな よく知らん 805:デフォルトの名無しさん 08/06/07 16:46:12 >>802 物理的に表現したいならこんな感じです a:加速度 v:速度 p:位置 dt:微小時間 とすると、こういう微分方程式が成り立ちます v(t)/dt = a p(t)/dt = v(t) dtはゲームなら1フレームの時間(約16.7ms)と考えるのが普通です この式を例えば前進差分(ぐぐってね)で微分項を近似するとこうなります ( v(t+dt) - v(t) ) / dt = a ( p(t+dt) - p(t) ) / dt = v(t) t+dt時間における速度と位置を知りたいので式を変形します v(t+dt) = dt * a + v(t) p(t+dt) = dt * v(t) + p(t) この式をゲームのプログラムなんかではこう表現します void Update( float dt ) { velocity += dt * acceleration; position += dt * velocity; } で、左右移動したいとき、というのは速度に値が加えられている状態なんで、 velocityに対して基本速度を加えておけばOKです
次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
レスジャンプ
mixiチェック!
Twitterに投稿
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch
4193日前に更新/244 KB
担当:undef