今日の進捗~近接攻撃がヒットした場所にエフェクトを出す!~(最後に訂正あり)
今回は、
近接攻撃がヒットした場所にエフェクトを出す!
方法を解説します!
※手探りでやったのでまだまだ改善点などがある可能性があります。
まずキャラに武器(スタティックメッシュ)を持たせます。
武器のコリジョンをあらかじめコンストラクションスクリプトで「NoCollision」にする。
次に、Sceneコンポーネントを武器に2つ追加する。
そして、2つのSceneに名前を付ける。「TraceStart」と「TraceEnd」
「TraceStart」を武器に付け根あたりに、
「TraceEnd」を武器の終端あたりに配置します。
次に、BPインターフェースを作成します。
名前を「SpawnEmitter」にします。
「SpawnLocation」という名のインプットピン(Vector型)を追加します。
インターフェースはこれで完了です。
次に、AnimNotifyStateクラスのBPを作成します。
名前を「HitTrace」にします。
作成した「HitTrace」を開き、「ReceivedNotifyTick」関数をオーバーライドします。
オーバーライドした関数に以下の処理を組みます。
自分のキャラをキャストして、そこから武器につけた「TraceStart」「TraceEnd」をゲットしてきます。
「TraceStart」から「TraceEnd」までトレースを飛ばすようにします。
作成した「SpawnEmitter」インターフェースを追加し、トレースがヒットした位置を「SpawnEmitter」の「SpawnLocation」につなぎます。ターゲットはもちろんヒットしたアクター。
リターンノードのReturnValueにチェックをつけるのを忘れずに。
タグ判定を行っているので、タグの中身は当然敵キャラにつけているタグと同じものを指定します。(画像だと「Enemy」にしてあります)
作成した「HitTrace」を、モンタージュに入れます。
ちょうど武器を振っているときにのみ「HitResult」を呼び出してトレース処理を行うようにしてます。
次に、敵キャラの処理です。
サードパーソンキャラを使ってます。
以下の処理を組みます。
「SpawnEmitter」インターフェースが呼び出されて、トレースのヒットした位置からエフェクトが出るようにします。
そして、敵にタグをつけるのを忘れずに!(画像だと「Enemy」です)
これで、武器を振った時にLinetraceが飛ばされ、トレーズがヒットした場所からエフェクトを再生させることが出来ました!
これでやってみましょう!
武器を振った時のみしっかりトレース処理が行われてるのが分かりますね!
しかし、たまにトレースがヒットしてないせいかエフェクトが出ないときがあります。
まだまだ改善の余地ありですね・・・!
それではまた!^^ノシ
※訂正!※
すいません!訂正します!
LineTraceByChannelでトレース処理を行うとありますが、
これだと、たまにトレーズが当たらないときがあり不安定です。
なので、BoxTraceByChannelあるいはSphereTraceByChannelを使いましょう!
これでLineTraceByChannelの時の不安定さがなくなりました!多分!
これでもまた何かあれば教えてください!
それではまた!^^ノシ