描いた円を上キーでジャンプさせるにはどうすればいい?
意味が分かりませんがKeyDownイベントでそういう処理書けばいいんじゃないでしょうか
いや、そのKeyDownの中身が分からなくって
KeyDownイベントの中身で円を描く場所を変えて描画処理に投げる
円をどうやって描いてるかジャンプってどういう意味なのか分からなくって
プログラミングが下手な人って質問も下手だよね
ダブルバッファにしろよ
画面ちらつくぞ
上向きの初速を与えて、一定の下向きの加速度を受けながら運動するようにしたい。
例えば、20進んで一瞬停止して、15進んで一瞬停止して、の繰り返しでいいのか
v = v0 + gt と言う式を当てはめれば良いだけじゃん
↑アホ
796 :
デフォルトの名無しさん:2008/06/07(土) 12:37:46
tをどうすれば?
タイマーでも使ってろ
変数tを入れれば位置まで出せる公式があったろ
リアルにやるならtをタイマーを使って現実時間とぴったり合わせりゃいい
加速度を9.8/sずつ減らせばいいんでね?
p0 : 初期位置
v0 : 初期速度
g : 重力加速度(約-9.8)
p(t) : 初期時刻からの経過時間tの時の位置
p(t) = p0 + v0*t + 0.5*g*t*t
つかいつの間に重力加速度の話になったんだ
>>800 それをwhileに入れれば出来そうだけど、ジャンプ中も左右移動したい
なんかこのスレ方向性分かんなくなってきたなw
ジャンプ中左右移動したいなら
new Timer( () =>
{
位置更新
描画
});
void KeyDown(...)
{
switch(key)
case ←:
左にちょっとずらす
...
}
こんな感じで出来るのかな
普通は
while(true)
{
入力ゲット
位置更新
描画
時間が来るのを待つ
}
こんな感じなのかな
よく知らん
>>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です
って書き終わって凄く後悔した
スレ違いにもほどが
>805はY方向だけなので、Xは別にしないとだめだぞ。
横への移動を表す加速がY方向へは関係しないとき、XとYは独立して扱えるからよい子のみんなは気をつけよう。
気をつけるまでも無く自明だと思うのですが!
型を書いてないからアレだけど
ベクトル型を使うのが普通なんで