ホーム>source

私は特定の位置を指す矢印を作ろうとしていますが、問題は、ベクトルと角度を付けると、西と東の両方で90度になるため、西と東を区別できないことです。どうすれば西をマイナスにするか、西を180度追加して、それらの間の差を作ることができますか?

私のコード:

<前>ウィズウィズ

targetLocは、ポイントしたい位置です

たとえば、座標がプレーヤーからの視界から90°にある場合、角度は西側と東側で90°です。または、座標がプレーヤーからの視界から45°である場合、角度は西側で45°で、側に。

yプランではなく、xプランとzプランのみを使用したい。

double angle = 0; Vector a = (targetLoc).toVector().subtract(player.getLocation().toVector()).normalize(); Vector b = player.getLocation().getDirection(); angle = Math.acos(a.dot(b)); angle = Math.toDegrees(angle);
あなたの答え
  • 解決した方法 # 1

    これが私がしたことですあなたの助けに感謝します

    <前>ウィズウィズ Vector a = (targetLoc).toVector().subtract(player.getLocation().toVector()).normalize(); Vector b = player.getLocation().getDirection(); angle = Math.acos(a.dot(b)); angle = Math.toDegrees(angle); if(a.getX()*b.getZ() - a.getZ()*b.getX() < 0) { angle = -angle; }

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ MySQL GROUP BY if条件