🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Unreal Engine

Unreal Engineは、Epic Games社によって開発されたゲームエンジンです。高レベルの移植性を持っており、様々なプラットフォームのゲーム開発が可能。GitHubアカウントを登録すれば無料でダウンロードできます。

UE4

UE4はUnreal Engine(アンリアルエンジン)の第4世代です。 UEは、Epic Gamesより開発されたゲームエンジンです。

Q&A

解決済

1回答

3739閲覧

ue4:避けられる自機狙い弾がつくりたい

UE4benkyo-

総合スコア37

Unreal Engine

Unreal Engineは、Epic Games社によって開発されたゲームエンジンです。高レベルの移植性を持っており、様々なプラットフォームのゲーム開発が可能。GitHubアカウントを登録すれば無料でダウンロードできます。

UE4

UE4はUnreal Engine(アンリアルエンジン)の第4世代です。 UEは、Epic Gamesより開発されたゲームエンジンです。

0グッド

0クリップ

投稿2021/03/16 03:29

編集2021/03/17 02:40

ue4でよけやすい自機狙い弾がつくりたいですがやり方がわかりません。
よろしければやり方を教えてください。

仕様は
・プレイヤーの位置を取得して45度くらいの角度から打つ
・そしてプレイヤーの方に向かっていくがあまり追跡能力はなく、避けようと思えばよけられる。
・時間で消える(ここはわかります)

です。
1つ目の項目はプレイヤーの位置はGetActorLocationで取得してできると思いますが、その45度くらいの向きに飛ばす
やり方がわかりません。```ProjectileMovement

2つ目の項目は思いっきりついてくるのは出来ますが避けれないです。 3つ目の項目は生成して何秒経つと消えるみたいなのがあったのでわかります。 何かわかる方よろしくお願いします。 **回答を受けて===** 回答者様のおかげで弾の軌道は出来ました。 ですが敵の弾の生成の時にローカルでなくワールドの座標に生成されてしまうのでおかしいです。 下の画像が処理の内容です。やり方が間違っていますか? ![イメージ説明](e8a967036d52945e0d9c6363f753ecdd.png)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

プレイヤーの位置を取得して45度くらいの角度から打つ

45度傾けてから進ませると姿勢は変えずに45度の位置によって変わりますが、
とりあえず指定したActorの前方向から基準に右に45度傾けたベクトルの取得方法を提示します

自キャラから Get Actor Forward Vector を使用して前方向のベクトルを取得し、 Rotate Vector で任意の方向に回転をさせます。
この時 Rotate Vector の BピンのZに45を指定することでActorの前方向から右に45度傾けたベクトルを取得できます。

そしてプレイヤーの方に向かっていくがあまり追跡能力はなく、避けようと思えばよけられる。

ものによってホーミングの挙動は大きく変わるので要件次第だと思います。
ぱっと思いつく例を挙げます

  1. ホーミング弾とターゲットとの距離が規定距離まで近づいた場合ホーミングを切る

つまり相手が動き続けていれば基本的に当たらない弾になります

  1. ホーミング時に1秒間で追尾できる角度に制限を設ける

つまり当たりそうな時に急旋回みたいなことをすればよけれるようになります

  1. ホーミングする座標をターゲットの座標からちょっとブレた位置に誘導する

立ち止まってれば当たらないがむやみに動くと当たってしまう弾になります。

上記をうまいこと混ぜればそれっぽいホーミング弾が作れるんじゃないでしょうか

投稿2021/03/16 03:52

MMashiro

総合スコア2380

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

UE4benkyo-

2021/03/17 02:27

回答ありがとうございます。 弾の動きは出来たのですが、 敵が球を生成するときになぜかワールドの座標になってしまうので固定されたところから出てしまいます。
MMashiro

2021/03/17 02:43

何をどうして現在の処理がどうなってワールド座標になっているのかの情報が一切ないです。 恐らく "プレイヤーの位置を取得して45度くらいの角度から打つ" という処理の部分だと思いますが 必要な情報はちゃんと提示しないと回答を得られないことも多々あるのでご注意ください。 Get Actor Forward Vectorで取得できるベクトルや、それをRotate Vectorして取得できるベクトルは全て正規化されたベクトルになります。 つまり上記で取得できた座標をそのまま弾生成座標に使ってはいけません(座標ではなくベクトルなので) 生成元の座標 + 上記で取得したベクトル * スケール値 の計算をしてそれを生成する座標に渡してみてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問