2012-03-16 7 views
0

こんにちは私はJavaでテストのためのゲームを作っています。 私は動物(エンティティ)とプレイヤーの上下/左右/位置と位置の4つのアニメーションを持っています。どのようにプレイヤーに見える方向を検出する - Java

私はいつも動物の姿を見るようにしたいが、作り方はわからない。私が 'entity.x> player.x'を使用すると、正しい側に見えますが、見下ろすことができませんか?

うまくいけば、あなたは私が何を意味するかundersteand、答えてください:D

+0

*「あなたが何かを知っていれば教えてください」*質問をするのは理にかなっています。あなたの質問は何ですか?また、.. * "どのアニメーションを実行するべきかを決定するために角度を使って試しましたが" * SSCCEであなたがしたこと(あなたの最善の試み)を記述してみてください。コードは言葉よりも大きく語ります。 –

+0

私はよく人々が私のような質問を言うのを見ているが、私はそれをより良く説明する方法を知らないので、あなたの気持ちを知っています。エンティティ(mob)の上下左右4つのアニメーションがあり、エンティティが常にそのプレーヤを見たいと思っています。私はどのようにプレイヤーに見える方向を検出するのか分からない。 – IvanDonat

+1

ヒント「プレーヤーに見える方向を検出する方法」質問だけでなく、最初の質問がこのページに表示されます。私はいくつかのノイズを削除することができますので、ポストにそれを編集してください。 –

答えて

0

はすでに半分の方法があります。あなたがしたいことは、プレイヤーが動物のどこにあるのかを判断することです。

ましょうまず、あなたが言ったように、この

enum Direction { NORTH, EAST, SOUTH, WEST }; 

をカプセル化する列挙型を作るには、プレイヤーは動物の左か右にあるかどうかを確認することができます。

同様に、Y座標と北/南方向で同じことができます。

if(player.getY() > animal.getY()) { 
    animal.setDirection(Direction.NORTH); 
} else { 
    animal.setDirection(Direction.SOUTH); 
} 

ここで、最初の小切手か2番目の小切手のどちらを使用すべきかをどのように把握するのですか?さて、それについてもう一度考えてみてください。もしあなたがどこに住んでいるのか "北"に住んでいるなら、あなたはおそらくまっすぐ北ではなく、むしろほとんど北 - 確かに東よりも北です。ですから、「支配的な方向は何ですか?」つまり、良い点検です。あなたが東よりもさらに北に住んでいるなら、あなたは北に住んでいると言います。だからどうやってそれをチェックするのですか?さて、北/南をあなたの場所に移動する距離は、あなたが東/西を旅しなければならない距離よりも大きいと言います。コードでは:

if(Math.abs(animal.getX() - player.getX()) > Math.abs(animal.getY() - player.getY())) { 
    //More east-west than north-south - do EAST-WEST check 
    if(player.getX() > animal.getX()) { 
     animal.setDirection(Direction.EAST); 
    } else { 
     animal.setDirection(Direction.WEST); 
    } 
} else { 
    //More north-south than east-west - do NORTH-SOUTH check 
    if(player.getY() > animal.getY()) { 
     animal.setDirection(Direction.NORTH); 
    } else { 
     animal.setDirection(Direction.SOUTH); 
    } 
} 

そして、あなたが行われています。

だから、
if(Math.abs(animal.getX() - player.getX()) > Math.abs(animal.getY() - player.getY())) { 
    //More east-west than north-south - do EAST-WEST check 
} else { 
    //More north-south than east-west - do NORTH-SOUTH check 
} 

、これを組み合わせることにより、最終的な結果を与えます!これ以上質問があれば教えてください。

+0

うわー!ありがとうございました。私はこのようなことを考えていましたが、Math.absについて知りませんでしたので、どうしたらよいかわかりませんでした。 – IvanDonat

関連する問題