Projectileの注意点

今回は、

 

ProjectileComponentの注意点

 

についてお話します!

 

シューティングゲームを作る時、基本的にProjectileComponentを使って球を飛ばしますよね??

 

その時、飛ばした球にヒットイベントを追加するとしましょう。

f:id:Free_Gamer:20180524204730p:plain

とりあえず、「飛ばした球が何かにヒットしたら、文字表示」としときましょう。

 

これで、プレイしてみると・・・

youtu.be

なぜかすり抜けてしまいます。

 

コリジョンを確認してみましょう。

f:id:Free_Gamer:20180524205807p:plain

全部ブロックするようになっているので、問題ないはずですね。

では、なぜすり抜けるのでしょう??

 

理由はこれです!

f:id:Free_Gamer:20180524210826p:plain

f:id:Free_Gamer:20180524210852p:plain

DefaultSceneRootが親コンポーネントになっていると、どうやらすり抜けてしまうみたいです。

 

なので、DefaultSceneRootを球のメッシュで上書きしましょう!

f:id:Free_Gamer:20180524210455p:plain

これでもう一度プレイすると・・・

youtu.be

無事、Hitイベントが発生しましたね!

 

このProjectileで飛ばした球がすり抜けてしまう問題は結構悩んでいたので、ほかにも同じことで悩んでいる人がいるんじゃないかと思いブログに書きました。

 

Twitterで教えてくれた人にマジで感謝です!助かりました!

 

それではまた!^^ノシ

 

キャラBPを作る時の注意点

Free_Gamerです!

 

今回は

 

キャラBPを作る時の注意点

 

を説明します!

 

※サードパーソンテンプレートで説明します。

 

まず、キャラを前後左右移動させるときのBPの注意点

キャラを前後左右移動させるためにはこんな感じでBPを組むと思います。

f:id:Free_Gamer:20180522203359p:plain

ここで僕がやったうっかりミスを紹介します。

このBPの場合、「GetControllerRotationでコントローラーによる回転を取得」するのですが、「キャラの回転を取得」するものだと勘違いして「GetActorRotation」ノードで組みました。

f:id:Free_Gamer:20180522202427p:plain

すると操作がおかしくなります。

youtu.be

動画で分かったかわかりませんが、実際やってみると例えば「D」キー(右に移動)を押し続けると、永遠にその場で右回転し続けてしまいます。

それ以外の移動もやりづらくなります。

 

なので、ここは「GetActorRotation」ではなく、「GetControllerRotation」です。

 

次に、SpringArmとCameraの注意点

 

まず親クラスが「Character」のBPを作り、キャラを動かすためのBPを作りますよね。

その時にコンポーネントにデフォルトで備わっているのは

・CapsuleComponent

・ArrowComponent

・Mesh

・CharacterMovement

です。

f:id:Free_Gamer:20180522200348p:plain

あと必要なのは、

・SpringArm

・Camera

です。

 

SpringArmとCameraを追加します。

が、ここで注意点。

f:id:Free_Gamer:20180522200834p:plain

画像のように、Meshの子としてSpringArmを追加し、さらにSpringArmの子としてCameraを追加してらどうなるでしょう??

実際にやってみるとわかるのですが、なかなか操作しづらい感じになります。

言葉では説明しづらいし、動画にしても分かりにくいと思うので、やってみたほうが分かりやすいです。

とにかくこれでは操作がまどろっこしいです。

 

なので、以下のようにSpringArmとCameraを追加します。

f:id:Free_Gamer:20180522201516p:plain

Meshを親にはせずに、SpringArmを親にして、その子としてCameraを追加します。

 

間違い

親・・・Mesh

Meshの子・・・SpringArm

SpringArmの子・・・Camera

f:id:Free_Gamer:20180522201725p:plain

正解

親・・・SpringArm

SpringArmの子・・・Camera

f:id:Free_Gamer:20180522201806p:plain

 

これでプレイすると

まともな操作に戻ってくれるはずです。

 

SpringArmの注意点

SpringArmの詳細パネルでチェックをつけておくべき場所があります。

f:id:Free_Gamer:20180522204256p:plain

赤枠で囲ってある「UsePawnControllRotation」です。

ここにチェックをつけなかった場合どうなるか。

動画だとわかりづらいのでやってみたほうが分かりやすいですが、例えば右に移動すると、何にもしていないのにカメラがキャラの向いている方向に向いてしまいます。

ちょっと操作しづらいです。

 

なので「UsePawnControllRotation」にはチェックをつけましょう。

 

今回はここまでです。

それではまた^^ノシ

SimulatePyhsicsが動作しないときの対処

どーも!Free_Gamerです!

 

今回は・・・

 

SimulatePyhsicsが動作しないときの対処法!

 

についてお話します!

 

つい最近、UE4のSimulatePyhsicsで遊んでいてら、こんなことがありました。

StarterContentsで用意されているWallをレベル上に配置し、SimulatePyhsicsにチェックをつけてプレイしたのですが、なぜか体当たりしてもなぜか動きません。

 

プレイを終了すると、右下にエラー表示が出てきました。

f:id:Free_Gamer:20180521205710p:plain

エラーの内容は以下の通りです。

f:id:Free_Gamer:20180521205747p:plain

「物理シミュレーションを試しましたが、ComplexAsSimpleコリジョンを持っています。」

と出ました。

「??????? ? ComplexAsSimpleコリジョン????」

となりました。

おそらくこのような目にあった人はいるんじゃないでしょうか??

そんな人の為に、対象法をお伝えします!

 

まず、「ComplexAsSimpleコリジョン」というのが何なのか。

それは、スタティックメッシュエディターを見ればわかります!

スタティックメッシュエディターの詳細を見てみると・・・

ありました!

f:id:Free_Gamer:20180521210604p:plain

コリジョン」項目にある「CollisionComplexity」というところが、デフォルトで「UseComplexCollisionAsSimple」になっているはずです。

これを、「ProjectDefault」に変更しましょう!

スタティックメッシュエディターを保存し、もう一度プレイしてみると・・・

 

無事、SimulatePyhsicsが動作してくれましたね!

もし、SimulatePyhsicsにチェックをつけたのに動作しないとなった時は、今回紹介したやり方を参考にしてみてください!

 

それではまた!^^ノシ

SimulatePhysics~コンストレント~

どーも!Free_Gamerです!

 

今回は・・・

 

コンストレイン

 

について説明します!

f:id:Free_Gamer:20180521184025p:plain

「コンストレイント」は「制約」という意味。

つまり、物理シュミレーションの制御を行えるということです。

 

コンストレントの項目を見てみると、

「ポジションをロック」

「回転をロック」

の2つがあります。

 

まず「ポジションをロック」の解説です。

SimulatePyhsicsにチェックがついているアクターに対して衝突すると、

f:id:Free_Gamer:20180521184616p:plain

f:id:Free_Gamer:20180521184636p:plain

当然倒れます。

ここで、「ポジションをロック」の「X」にチェックをつけて、もう一度プレイしてみると・・・

 

「ポジションをロック」に何にもチェックをつけなかった場合


ブログ用 UE4ポジションをロック無し

「X」にのみチェックをつけた場合


ブログ用 UE4ポジションをロックXのみ

分かりましたか??

チェックをつけなかった時と違って、「X」にのみチェックをつけたドアは「X」方向には吹き飛びませんでしたね。

 

次に、「Y」にのみチェックをつけましょう!

すると・・・

 

「ポジションをロック」に何にもチェックをつけなかった場合


ブログ用 UE4ポジションをロックY無し

「Y」にのみチェックをつけた場合


ブログ用 UE4ポジションをロックYのみ

「X」方向には飛びましたが、今度は「Y」方向には飛びませんでしたね!

 ちなみに、「Z」にチェックを入れると、プレイ開始時点で不安定な動きをします。

ぶつかると、その場で倒れます。

 

つまり、「ポジションをロック」とは指定した軸の移動を「ロック(制御)」するためのものなのです!

f:id:Free_Gamer:20180521200501p:plain

 

次に、「回転をロック」です!

「回転をロック」の「X」にチェックをつけると・・・

 

「X」チェック無し

youtu.be

「X」チェック有り

youtu.be

ぶつかった時の動きが違いましたね!

「X」チェック無しは、あらゆる方向に回転しながら飛びましたが、

「X」チャック有りは、飛ぶときにX軸の回転は行われなかったですね!

 

次に「Y」にのみチェックをつけると・・・

 

「Y」チェック無し


ブログ用 UE4回転をロックY無し

「Y」チェック有り

youtu.be

「Y」チェック無しとは違い、「Y」チェック有りはY軸の回転は行われなかったですね!

ちなみに、「Z」のみにチェックを入れた場合は、左右回転が行われなくなります!

 

つまり、「回転をロック」とは指定した軸の回転を「ロック(制御)」するためのものなのです!

 

 

最後に、今回紹介したものを使って「シーソー」を作ってみましょう!

「Cube」を長い板状にして地面から浮くように設置します!

f:id:Free_Gamer:20180521202019p:plain

詳細パネルの「ポジションをロック」のXYZに全部チェックをつけましょう!

これは、どこからぶつかっても動かないように固定するためのものです。

次に「回転をロック」の項目は、シーソーのように回転を行いたい軸以外にチェックをつけましょう!

画像の場合だと、「Y」軸に自由に回転させたいのでそれ以外のXZにチェックをつけましょう!

 

最終的にこうなります!

f:id:Free_Gamer:20180521202716p:plain

 

それでは、実際にプレイしてみましょう!

youtu.be

動画のように、シーソーの動きになったのなら成功です!

簡単に遊具が作れましたね!いえーい!(*'▽')

 

今回はここまでです!それではまた!^^ノシ

 

 

 

SimulatePhysicsについてちょっとお話(説明不足あり)

どーも!Free_Gamerです!

今回は・・・

 

SimulatePyhsics!

 

についてお話します!

 

まず、レベル内にスタティックメッシュを配置しましょう!

画像のようにSphereを配置しましょう!

f:id:Free_Gamer:20180520175953p:plain

次に、配置したSphereの詳細パネルを見てみましょう!

詳細パネルの「Physics」項目にはいろいろな項目がありますが、今回は赤枠で囲ってある部分を説明します!

f:id:Free_Gamer:20180520180201p:plain

まず、大前提してSphereのSimulatePyhsicsにはチェックを入れましょう!

次に、「MassInKg」にチェックをつけましょう!

これで、「MassInKg」に数値を入れることが可能になりました!

おそらくデフォルトだと「100」になっていると思うのですが、これを「0.001」にして実際にプレイしてみましょう!(最小値が「0.001」なので「0」は入れられない)

f:id:Free_Gamer:20180520192955p:plain

f:id:Free_Gamer:20180520193018p:plain

キャラがぶつかった瞬間、一瞬にして消えてしまいましたね。

正確には、消えたというよりもはるか彼方へ一瞬で吹き飛んだという感じでした。

では次に、「MassInKg」の数値を「5000」にしてもう一度プレイしてみましょう!

すると・・・


ブログ用 UE4物理シュミレーション質量

「0.001」のときとは違い、ゆっくりSphereが動きます。

つまり「MassInKg」は「スタティックメッシュの重さ」を示しているのです!

「0.001」にして一瞬で吹き飛んだのは、Sphereが思いのほか軽すぎたから。

「5000」にしてのっそり動いたのは、Sphereがそれだけ重かったから。

と、いうことになります!

 

それでは次は、「LinearDamping」の解説です!

「LinearDamping」はデフォルトだと「0.01」になっていますが、これを「2」にしてプレイしてみましょう!すると・・・


ブログ用 UE4LinerDamping

ちょっとゆっくり落ちてきますね。

そして、動かしても転がりますが、段々速度が遅くなり止まりますね。

「LinearDamping」は移動の減衰加減を調整する項目!だと思います!(この辺はちょっとあやふやです。すいません・・・)

「LinearDamping」の数値が「0」より大きい場合は、移動速度が徐々に落ちていき、数値が「0」より小さい場合は、移動速度が徐々に早くなっていく。だと思う。(この辺は各自調べてみてください。よければ僕に教えてください・・・)

 

次に、「AngularDamping」の解説です!

これは箱のほうが分かりやすいと思うので、Cubeをレベル内に配置しましょう!

f:id:Free_Gamer:20180520182947p:plain

当然SimulatePyhsicsにチェックをつけましょう!

次に、「AngularDamping」の数値を「-50」にしてプレイしてみましょう!

すると・・・


ブログ用 UE4AngularDamping-50

ものすごい勢いでスピンしながらどこかへ行ってしまいましたね。

では次に数値を「50」にしてもう一度プレイしてみましょう!


ブログ用 UE4AngularDamping50

今度は、スピンすることなくおとなしく地面に落ちました。

つまり、「AngularDamping」は、回転速度を調整する項目!だと思います!(詳しい人いたら教えてくださいぃぃ・・・)

 

つまり、

「AngularDamping」の数値が「0」より大きいほど、スピンしにくくなり、

数値が「0」より小さいほど、スピンが起きやすくなる。

という感じだと思います。

 

 

最後に「EnableGravity」です!

これはかなり簡単で覚えやすいと思います。

デフォルトではチェックがついていませんが、チェックをつけてプレイしてみましょう!

すると・・・


ブログ用 UE4無重力

スタティックメッシュが一切落ちてきませんねぇ。

試しにぶつかったら動きはするものの、常に浮いています。

まるで無重力ですね!

そうです!「EnableGravity」は重力(Gravity)のON/OFFを切り替える項目だったのです!

簡単でしょう??(ドヤ顔)

 

さて、今回はここまでです!

Physicsの項目をちょっといじるだけでも、物理シュミレーションの挙動に変化が出ることが分かったかと思います!

 

※ちなみに、これまでの、そしてこれからのブログもそうですが、間違えている部分などがある可能性があるので、もしそのような部分を見つけたら、お気軽に教えてください!すごい俺喜びます!w

 

それではまた!^^ノシ

 

 

PhysicsConstraintActorについて補足

どーも!Free_Gamerです!

 

今回は前回の記事で書いた・・・

 

PhysicsConstraintActor

 

の、補足をしていきたいと思います!

PhysicsConstraintActorって何ぞや!?っていうのは、前回の記事をお読みになってください。

前回の記事の状態から始めましょう!

 

まずPhysicsConstraintActorの位置による挙動の変化!

PhysicsConstraintActorをSphereに近い位置に置いた場合

f:id:Free_Gamer:20180520161412p:plain

Sphereから離れた位置に置いた場合

f:id:Free_Gamer:20180520161813p:plain

どう変化するか検証してみましょう!

 

近い場合


ブログ用 UE4振り子近いバージョン

離れている場合


ブログ用 UE4振り子離れてるバージョン

 

比べてみると、近いほうは振れ幅が狭く、離れているほうは振れ幅が広かったですよね。

このように、PhysicsConstraintActorは設置する位置によって、振れの挙動が変化するのが分かったかと思います。

 

次に、PhysicsConstraintActorの詳細パネルを見てみましょう!

f:id:Free_Gamer:20180520163313p:plain

「LinearLimits」の項目を見てみましょう!

「LinearLimits」に、ⅩMotion、YMotion、ZMotionという項目があります。

例えば、XYZ全部をLockedからFreeに変えた場合どうなるか

f:id:Free_Gamer:20180520022010p:plain

このようにどこまでーも伸びていきます。

では次に、XYZをFreeからLimitedにしてみましょう!

すると、XYZをLockedにしてあるときと、何も変わらいと思います。

では、XYZをLimitedにしてLimitの数値を「150」にしてみましょう!

すると・・・


ブログ用 UE4振り子Limit「150」の場合

Limitの数値「0」の場合と違い、地面にはぶつかるものの、はるか彼方まで伸びることはありませんでした。

つまり、「LinearLimits」はCableActorの伸縮距離を決めるための設定項目なのです!

Limitの数値が小さいほど、CableActorは伸びない、張りがあるケーブルになり、

Limitの数値が大きいほど、CableActorは伸びのある、緩いケーブルになる。

ということであるのです!

 

今回はこれだけです!本当はもう1つ「AngularLimits」の項目についてもお話したかったのですが、自分自身そこの項目はよくわかっていないため今回はできません・・・。

分かり次第、追記します!

 

それではまた!^^ノシ

 

振り子の作り方!

どーも!Free_Gamerです!

今日は・・・

 

振り子の作り方!

 

についてお話します!

 

必要なもの!

・スタティックメッシュ2個

・PhysicsConstraintActor

・CableActor

です!

 

それでは解説!

まずスタティックメッシュをレベル上に配置します!

今回は、「キューブ(Cube)」と「球(Sphere)」にしましょう!

f:id:Free_Gamer:20180520015221p:plain

球(Sphere)の方は、「SimulatePyhsics」にチェックをつけましょう!

 

次に、「CabaleActor」を追加しましょう!

ビューポートの画面左にあるモードパネルの「クラスの検索」に

「Cabale Actor」と入力すると、出てくるので、それをレベル内にD&Dしましょう!

f:id:Free_Gamer:20180520015601p:plain

CabaleActorは、見ればわかると思うのですが、「ケーブル(Cabale)」のようにウニョウニョ動きます。

このCabaleActorを、このように配置してください!

f:id:Free_Gamer:20180520015922p:plain

Cubeのおおよそ真ん中ぐらいの位置ですね!

CabaleActorがちょっと埋まるぐらいがいいと思います!

f:id:Free_Gamer:20180520020019p:plain

 

そして、CabaleActorをSphereにつなげましょう!

CabaleActorの詳細パネルにある、「Attach End To」項目にある「Other Actor」から「Sphere」を選びましょう!

「Other Actor」の欄には、レベル内に配置されている全アクターが表示されます。

そうするとこうなると思います。

f:id:Free_Gamer:20180520020721p:plain

X方向にずれていますね。

これは、CabaleActorの詳細パネルにある「End Location」の「X」が「100」になっているためです。

つまりこの状態は「CabaleActor」の「End Location」が「X」に「100」ずれていることになります。

なので、「End Location」の「X」を「0」にしましょう!

f:id:Free_Gamer:20180520021817p:plain

さあ!これで完成です!簡単でしたねー!

これで実際にプレイして、球(Sphere)に体当たりしてみましょう!振り子のようにブンブン振れれば成功ですね!

 

f:id:Free_Gamer:20180520022010p:plain

・・・・・・・・・・・・・・・・・・

なんということでしょう。体当たりしたらそのままはるか彼方へ行ってしまいました。

これは振り子とは言えませんねー。

じゃあどうすればいいか!

必要なものが1つ欠けていましたね!

「PhysicsConstraintActor」です!これが必要です!

 

これは直訳すると「物理制約俳優」です!訳が分かんねえですね!

まあつまり物理的な挙動を制限してくれる奴ってことだと思います!多分!

とりあえずやってみればわかります!

 

ビューポートのモードパネルで、「PhysicsConstraintActor」と検索しましょう!出てきますよ。

f:id:Free_Gamer:20180520022704p:plain

レベル内にD&Dしましょう。

するとこんなのが出てきます。これが「PhysicsConstraintActor」です。

f:id:Free_Gamer:20180520022838p:plain

PhysicsConstraintActorを、CableActorの真ん中に置き、CableActorと被る位置に置きましょう。

f:id:Free_Gamer:20180520023256p:plain

f:id:Free_Gamer:20180520023310p:plain

 

次に、PhysicsConstraintActorの詳細パネルの「Constraint Actor2」から、「Sphere」を選択しましょう!

f:id:Free_Gamer:20180520023918p:plain

すると、Sphereに青いボックスが表示されますね。

f:id:Free_Gamer:20180520024246p:plain

これで、Sphere」の物理挙動が「Constraint(制約)」されて、永遠にビヨーンっと伸びることがなくなったわけです。

 

それでは、ここまでの流れを整理!

①スタティックメッシュ2個追加!

②上下にメッシュを置く!

③CableActorをつなぐ

④永遠にCableActorが伸びないようPhysicsConstraintActorを置く!

です!かなりざっくりになりましたがw

 

それでは実際にプレイし、また体当たりしてみましょう!


ブログ用 振り子の作り方

これでケーブルが、うにょーんと伸びることがなくなりましたね!

 

※ちなみに、PhysicsConstraintActorをCableActorの位置からずらすと、

f:id:Free_Gamer:20180520032743p:plain

こんな感じで、青い線が出てきます。

これがCableActorとずれていると、プレイした時に変な挙動になって、不自然な振り子になってしまいます。

実際にやってみるとわかると思います。

なので、そうならないためにPhysicsConstraintActorをCableActorと被る位置、つまりPhysicsConstraintActorの青線がCableActorと平行になるように置いたのです!

 

それではまた!^^ノシ