武器を持って、ちゃんと振って攻撃するとダメージを与えられるようにします。
武器を持って攻撃可能にします。
振りの速度が遅かったり、振り幅が狭いとダメージを無効にします。
武器のスタティックメッシュ
武器のスタティックメッシュを開く。
ソケットマネージャーを開き、ソケットを+(追加)する。
TraceStartを武器の根元、TraceEndを武器の先端に配置する。
武器のブループリント
BP: ブループリント クラス
親: Actor
名前: BP_LazerSword
親: Actor
名前: BP_LazerSword
コンポーネント
コンポーネントにStatic Meshを追加、名前をWeaponにします。
その詳細のStatic Meshには、先ほどソケットを追加したスタティックメッシュを選択する。
コリジョンプリセットはBloclAllDynamicのままで構いません。
その詳細のStatic Meshには、先ほどソケットを追加したスタティックメッシュを選択する。
コリジョンプリセットはBloclAllDynamicのままで構いません。
Weaponの下にGrabComponentを追加。
GrabComponentは持つ部分です。ビューポートを見て武器の柄の部分に配置しましょう。
GrabComponentの詳細のGrab TypeをSnapにする。
GrabComponentは持つ部分です。ビューポートを見て武器の柄の部分に配置しましょう。
GrabComponentの詳細のGrab TypeをSnapにする。
イベントグラフ
ノードを組む
カスタムイベント CacheTraceLocations
【変数】LastTraceStartLocation – Vector
Return Valueから変数へ昇格。
【変数】LastTraceEndLocation – Vector
Return Valueから変数へ昇格。
カスタムイベント CacheTraceLocations
【変数】LastTraceStartLocation – Vector
Return Valueから変数へ昇格。
【変数】LastTraceEndLocation – Vector
Return Valueから変数へ昇格。
ノードを組む
イベント Tick 1/3
【変数】SwordSpeed – Float
乗算するから変数へ昇格。武器の先端の速さ。
・最初の行程は武器の先端の速さを取得し、一定速度以上ならブランチでTureにします。
イベント Tick 1/3
【変数】SwordSpeed – Float
乗算するから変数へ昇格。武器の先端の速さ。
・最初の行程は武器の先端の速さを取得し、一定速度以上ならブランチでTureにします。
振ったと判定する速度が20.0、止まったと判定する速度が10.0、ダメージが当たえられる距離を50cmにしています。
これは16.0、8.0、80cmくらいでも良いです。50cmくらいだと剣先をチョコチョコ振ってもヒットしやすいですからね。
これは16.0、8.0、80cmくらいでも良いです。50cmくらいだと剣先をチョコチョコ振ってもヒットしやすいですからね。
Apply DamageのDamage CauserがSelfになっています。Damage Causerは何が(誰が)ダメージを与えたかというもの。プレイヤーに経験値を入れたい場合などは、Damage Causerをプレイヤーにした方が都合が良かったりします。
動作テスト
ブループリント クラス > アクターでBP_TestCubeを作成。
コンポーネントにCubeを追加する。
イベント Any Damageで消す。
これをLevelに配置してテストプレイ。
小さな振り、遅い振りではダメージ無効ですからCubeが消えません。
コメント