2009-08-07 9 views
0

どのように動くオブジェクトに対して一定の勾配を達成しますか?私はポイントx、yでスクリーンを召喚する敵を得ようとしていますし、スクリーンを横切って新しいx、yに飛んでいくようにしようとしています。傾きを追加すると、下向き、真っ直ぐ、上向きです。そんな感じ。今、私は産卵と特定の方向への敵の移動を知っているだけで、ここから何を見上げるべきか分かりません。敵と斜面

+0

ベジエのようなパラメトリック曲線/スプラインを使用した回答をしたいのですが、理論は少し複雑です。現在敵を動かしているコードを投稿できますか?これを追加する方法が見つからないかもしれませんが、あまりにも醜いわけではありません。 –

+2

もっと具体的にする。 (私はこのコメントが偽善であることを知っています) – immibis

+0

オブジェクトを直線に限らず特定のパス上で移動させる方法を尋ねていますか? – Daniel

答えて

1

あなたがあなたにデルタXとデルタY計算でき間のポイントに海峡ラインに移動したい場合:

DX = X2-X1; 
DY = Y2-Y1; 

次にあなたが特定の距離を移動したい場合は(速度/フレーム)を、そして

HYP = DX*DX + DY*DY; 
HYP = sqrt(HYP); 
DX = MoveD * DX/HYP; 
DY = MoveD * DY/HYP; 

// Move Distance (MoveD) From X1,Y1 to X2,X2 each screen update. 
if ((abs(X2-X)<DX)&&(abs(Y2-Y)<DY)) 
{ 
    X = X + DX; 
    Y = Y + DY; 
} else 
// STOP 

「急降下Pythagorian定理を使用して長さを標準化エンドポイントを動的に変更することによって行うことができます。 「ターゲット」の前にあるエンドポイントから開始し、ターゲットを移動して「スウィープ」モーションを作成します。 「スピードバイアス」を追加すると、下に向かって加速し、上に向かって減速します。

これは、Bresenhamのライン描画アルゴリズムまたはDDAのバリエーションを使用して整数計算に追加することもできます。

+0

あなたは「* Bresenhamの* lineアルゴリズム」を意味します。 – tpdi

+0

また、「加速する*減速し、*減速する」という意味です。 –

関連する問題