2016-05-19 3 views
0

が、私は角度を計算し、私のxとyのコードに値を追加してい、別のスプライトに対するスプライト散歩をするためには角度に沿ってスプライト徒歩

movement_angle = (atan2((y - target->y),(x - target->x))); 

if(isWalkable(game,delta)) 
{ 
    y -= ((int)(movementspeed)*delta)*sin(((movement_angle))); 
    x -= ((int)(movementspeed)*delta)*cos(((movement_angle))); 
} 

をしようとしてください。 しかし、動きは完璧ではありません、私が望むように動きません。

答えて

0

さて、あなたは代数的結果をintにキャストしています。私はそれがあなたの問題の原因かもしれないと思う。

+0

http://gamedev.stackexchange.com/questions/34494/how-do-you-make-bullets-move-at-an-angle-in-different-angles-using-delta –

+0

int)、xとyを浮動させましたが、解決しませんでした。:/ – styphNate

+0

"isWalkable(game、delta)"とは何ですか? – BJovke

1

それはあなたのコードから間違って起こっている正確に何を言うのは難しいですが、ここであなたが見て可能性がいくつかのものです:あなたがでtarget->xを減算する必要がありますtargetポイントからのベクトルを取得するには

  1. は、あなたはおそらく、すべての3Dジオメトリは、TRIGONを気になぜ
  2. 値のためdoublesを使用したいと思うけれどもポイントのxtarget->yポイントのy
  3. によっては、少なくともmovement_angleは、浮動小数点数である必要がありますオメトリ関数?あなたはxyからtarget->xtarget->yから直接歩きたいのですが、ベクトルを使用して正規化し、movementspeeddeltaを乗算するのはなぜですか? (削除
関連する問題