360度に飛ぶ弾のグラフィック向きを合わせたい

現在、Vampire Survivorsのようなトップビューで、
プレイヤーキャラクターに、以下のような攻撃をさせたいと考えています。

・「オートアタック」として、プレイヤーは何もしなくても、自動で弾が一定間隔で射出される
・オートアタックによる弾は
┗指定範囲内に敵が存在 する 場合、一番近くの敵の方向に向かって飛ぶ
┗指定範囲内に敵が存在 しない 場合、360度ランダムな方向に飛ぶ

という挙動で考えています。

現状、「衝撃波」のようなグラフィックを弾に設定していますが、
そのグラフィックの向きを、飛ぶ方向に合わせたいと思っています。

考えている実装方法としましては、

プレイヤーキャラクター
┗オートアタック地点(プレイヤーキャラのConnectorに配置したオブジェクト)

↑この「オートアタック地点(透明状態)」が弾を射出するものとし、

・「オートアタック地点」オブジェクトが一定間隔で弾を射出する
・「オートアタック地点」が、変数Aに乱数0~359を代入し、
射出された弾の変数「visible_direction(表示方向(度))」がそれをさらに取りに行く

という感じで実装できるかな?と思ったのですがどうもうまくいきません。

「弾に設定したグラフィックを、visible_directionによって8方向以外の向きにできるのかどうか」
すらもそもそもわかっていない状況です。

本件についてどなたかおわかりの方、ご助言をいただければ幸いです。
よろしくお願いいたします。
Video

360°の自由な回転を可能にするソリューションをお探しですか?それとも8方向のみでしょうか?

「いいね!」 1

>Are you looking for a solution that allows for 360° free rotation, rather than just 8 directions?

はい。その通りです。
敵はあらゆる方向からプレイヤーに向かってくるようにしたいので、
プレイヤーが発する弾は同様にあらゆる向きにグラフィックが変化するようにしたいです。

Yes, that’s right.
Enemies come at the player from all directions, so Bullet’s graphics need to be oriented in 360 degrees as well.

個人的な見解では、現在ビジュアルスクリプトのみを使用する場合は、特に優れた方法を提供していないように思われます。しかし、提案があります:

  1. 弾丸の向きを右側に固定する。
  2. Godot のノードを使用して弾丸に子ノードを追加し、GDScript スクリプトを作成して GameObject を毎フレーム回転させ、GameObject の現在の速度方向に合わせる。

わかりました。
少しお待ちください。後で完全な解決策をここに投稿します。

「いいね!」 1

それ用のプラグインを作成しました。

  1. 弾のゲームオブジェクトを準備してください。
  2. この弾のゲームオブジェクトには VisualScript が含まれていないか、含まれていてもすべてのアニメーション方向が右を向いている必要があります。
  3. 以下の投稿を読み、プラグインを使用してください。完了です。
    [Dive Into AGMaker] プラグインリリース - 移動速度の方向を向くようにゲームオブジェクトを回転させる
「いいね!」 1

手順通りに実装したところ、希望の挙動を実現できました!
ご返信いただきありがとうございました! :slightly_smiling_face:

I followed the steps and was able to achieve the behavior I wanted!

Thank you for your reply!
Video_2

「いいね!」 1

すみません、こちらのスクリプトを勝手ながら利用させていただいていたのですが、

新しく追加されたArea2DGameObjectノードでは機能しないみたいで

どのようにすれば使えるようになりますか?

こんにちは、対応できる方法を見つけますので、少し時間がかかるかもしれません。どうやって対応するかを調べる必要があります。

ご返信ありがとうございます。

ご対応頂けて助かります。