C#, C♯, C#相談室 Part46

このエントリーをはてなブックマークに追加
786デフォルトの名無しさん
描いた円を上キーでジャンプさせるにはどうすればいい?
787デフォルトの名無しさん:2008/06/07(土) 11:41:02
意味が分かりませんがKeyDownイベントでそういう処理書けばいいんじゃないでしょうか
788デフォルトの名無しさん:2008/06/07(土) 11:54:23
いや、そのKeyDownの中身が分からなくって
789デフォルトの名無しさん:2008/06/07(土) 11:56:34
KeyDownイベントの中身で円を描く場所を変えて描画処理に投げる
790デフォルトの名無しさん:2008/06/07(土) 11:56:35
円をどうやって描いてるかジャンプってどういう意味なのか分からなくって
791デフォルトの名無しさん:2008/06/07(土) 11:58:45
プログラミングが下手な人って質問も下手だよね
792デフォルトの名無しさん:2008/06/07(土) 12:00:20
ダブルバッファにしろよ
画面ちらつくぞ
793デフォルトの名無しさん:2008/06/07(土) 12:20:11
上向きの初速を与えて、一定の下向きの加速度を受けながら運動するようにしたい。
例えば、20進んで一瞬停止して、15進んで一瞬停止して、の繰り返しでいいのか
794デフォルトの名無しさん:2008/06/07(土) 12:26:27
v = v0 + gt と言う式を当てはめれば良いだけじゃん
795デフォルトの名無しさん:2008/06/07(土) 12:32:28
↑アホ
796デフォルトの名無しさん:2008/06/07(土) 12:37:46
tをどうすれば?
797デフォルトの名無しさん:2008/06/07(土) 12:40:12
タイマーでも使ってろ
798デフォルトの名無しさん:2008/06/07(土) 12:48:39
変数tを入れれば位置まで出せる公式があったろ
リアルにやるならtをタイマーを使って現実時間とぴったり合わせりゃいい
799デフォルトの名無しさん:2008/06/07(土) 14:58:07
加速度を9.8/sずつ減らせばいいんでね?
800デフォルトの名無しさん:2008/06/07(土) 15:15:33
p0 : 初期位置
v0 : 初期速度
g : 重力加速度(約-9.8)
p(t) : 初期時刻からの経過時間tの時の位置

p(t) = p0 + v0*t + 0.5*g*t*t
801デフォルトの名無しさん:2008/06/07(土) 15:23:50
つかいつの間に重力加速度の話になったんだ
802デフォルトの名無しさん:2008/06/07(土) 15:44:46
>>800
それをwhileに入れれば出来そうだけど、ジャンプ中も左右移動したい
803デフォルトの名無しさん:2008/06/07(土) 15:46:52
なんかこのスレ方向性分かんなくなってきたなw
804デフォルトの名無しさん:2008/06/07(土) 15:55:23
ジャンプ中左右移動したいなら

new Timer( () =>
{
 位置更新
 描画
});

void KeyDown(...)
{
switch(key)
case ←:
   左にちょっとずらす
...
}
こんな感じで出来るのかな
普通は
while(true)
{
入力ゲット
 位置更新
 描画
 時間が来るのを待つ
}
こんな感じなのかな
よく知らん
805デフォルトの名無しさん:2008/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です
806デフォルトの名無しさん:2008/06/07(土) 16:51:23
って書き終わって凄く後悔した
スレ違いにもほどが
807デフォルトの名無しさん:2008/06/07(土) 19:23:48
>805はY方向だけなので、Xは別にしないとだめだぞ。
横への移動を表す加速がY方向へは関係しないとき、XとYは独立して扱えるからよい子のみんなは気をつけよう。
808デフォルトの名無しさん:2008/06/07(土) 19:40:07
気をつけるまでも無く自明だと思うのですが!
809デフォルトの名無しさん:2008/06/07(土) 21:07:23
型を書いてないからアレだけど
ベクトル型を使うのが普通なんで