SlideShare uma empresa Scribd logo
1 de 68
Baixar para ler offline
Collision検証
HitとOverlapイベントの発⽣条件について
https://www.youtube.com/user/gansaibow
http://denshikousakubu.com/
https://twitter.com/gansaibow
Index
• 検証⽤のプロジェクト作成
• 衝突すると⾊が変わるBlueprintを作成する
• 配置してからコリジョンの設定を変更できるようにする
• Object Channel, Presetを追加する
検証環境
• OS : Windows 10
• UE4Version: 4.18.3
オブジェクトが衝突した際に、
Hit,Overlapイベントはどのような条件の時に発⽣するのか検証してみた
On Component Hitが発⽣した時は⾚ On Component Begin Overlapが発⽣した時は⻘
On Component End Overlapが発⽣した時は緑
Hit イベントが発⽣する条件
Physics : 〇
Query : 〇
Physics : 〇
Query : 〇 or ×
+ ぶつかる相⼿のCollisionChannelの
ResponseがBlock
両⽅ともCollision EnabledのPhysicsが
有効であること
イベントを発⽣する側のみ
[Simulation Generates Hit Events]に
チェックがついていること
Sphere Cube
イベントを発生する側
のみチェック
Overlapイベントの発⽣する条件
Sphere Cube
Physics : 〇
Query : 〇
Physics : 〇 or×
Query : 〇
+ ぶつかる相⼿のCollisionChannelの
ResponseがOverlap
イベントを発⽣させる側のCollision
EnableのQueryが有効であること
[オーバーラップイベントを発⽣させる]
に両⽅ともチェックがついていること
検証⽤のプロジェクト作成
ThirdPersonテンプレートを使って検証
初期配置のオブジェクトを削除する
キューブ(Cube)を配置して坂を作成する
スフィア(Sphere)を坂の上に配置する
スフィアのSimulate Physicsにチェック
プレイして確認する
衝突すると⾊が変わる
Blueprintを作成する
スフィアが衝突すると⾊が変わるブルー
プリントを作成する
On Component Hitが発⽣した時は⾚ On Component Begin Overlapが発⽣した時は⻘
On Component End Overlapが発⽣した時は緑
http://denshikousakubu.com/2017/06/11/20170613_BP_EditableMaterial/
よかったらマテリアルについて書いた記事
UE4 マテリアル体験 + マテリアルを編集するブループリントを作成する
⾊を変えるマテリアルとマテリアルイン
スタンスを作成する
Constant3Vectorを追加し、⾊を後から変えられるようにパラメーター化をする
Parameter Value
Parameter
name
Color
Default
Value
R: 1.0, G:1.0 B:1.0 A:1.0
適⽤ > 保存
マテリアルインスタンスの作成
ブループリント BP_VerifyCollisionを作成
コリジョン判定⽤のCubeを追加する
マテリアルのエレメント0に
M_ChangeColor_Instを設定
Simulation Generates Hits Eventsにチェックを付ける
Simulation Generates Hits Eventsに
チェックを付けると、接触したオブジェ
クトのObjectTypeとの関係に応じて、
Hitイベントを発⽣させることが出来る
コリジョンプリセットの▶をクリックす
るとコリジョンの関連についてみること
が出来る
⾒⽅については後述します
CubeにOn Component Hit, Begin Overlap, End Overlapの
イベントを追加する
変数の追加
変数名 変数の型 デフォルト値
ColorHit LinearColor ⾚(R:1.0 G:0.0 B:0.0 A:1.0)
ColorBeginOvealap LinearColor ⻘(R:0.0 G:0.0 B:1.0 A:1.0)
ColorEndOvealap LinearColor 緑(R:0.0 G:1.0 B:0.0 A:1.0)
MaterilInst Material Instance Dynamic >
Object Reference
-(設定なし)
BeginPlayイベントでDynamicMareialInstance
を作成して変数MaterialInstにセットする
⾊を変更する関数 ChangeColorを追加
関数名 アクセス指定子 Input/Output パラメータ名 型
ChangeColor プライベート Input Color Linear Color
Output Return Boolean
説明:⾊を変更する
(※アクセス指定⼦がパブリックの時は説明を書いておこう)
処理の実装
完成図
各イベントに⾊を変更する処理を実装
On Component Hit(Cube)
各イベントに⾊を変更する処理を実装
On Component Begin Overlap(Cube)
各イベントに⾊を変更する処理を実装
On Component End Overlap(Cube)
完成図
コンパイル > 保存
35
この後に動作を確認するため、コンパイル > 保存
BP_VerifyCollisionをビューポートに配置
して動作を確認をする
SphereとCubeのコリジョン設定を確認
Sphere Cube
コリジョンのオブジェクト応答の確認について
Sphere Cube
SphereのObject Type: Physics Body
Cubeのオブジェクト応答の
PhysicsBodyの⾏を確認すると、ブ
ロックにチェックがついている
PhysicsBodyが衝突した際にはブロッ
クする設定がされている
オーバーラップイベントを発⽣させるよ
うに設定してみる
コンパイル > 保存
40
この後に動作を確認するため、コンパイル > 保存
プレイして確認
SphereとCubeの[オーバーラップイベントを発⽣させる]をチェックした状
態にすると、オーバーラップイベントが発⽣する
Sphere Cube
Sphereの[オーバーラップイベントを
発⽣させる]にチェックをつけると
オーバーラップイベントが発⽣する
Hitイベントの発⽣する条件
Sphere Cube
衝突する相⼿側のObject Typeを確認
イベントを発⽣させる側のオブジェク
ト応答で相⼿側のObject Typeが
[ブロック]になっていることを確認
Hitイベントはイベントを発⽣させる側
のSimulation Generates Hit Eventに
チェックを付いていればイベントが発
⽣する
イベントを発生する側
のみチェック
Overlapイベントの発⽣する条件
Sphere Cube
衝突する相⼿側のObject Typeを確認
イベントを発⽣させる側のオブジェク
ト応答で相⼿側のObject Typeが
[オーバーラップ]になっていることを
確認
Overlapイベントは両⽅の[オーバー
ラップイベントを発⽣させる]に
チェックを付いていないとイベントが
発⽣しない
配置してからコリジョンの設
定を変更できるようにする
コリジョンプリセットをCustomに選択するとより詳細にコリジョンを設定できる
毎回ブループリントを開くのは⾯倒くさいので、配置してからコリジョンの設定を変更で
きるように修正する
コリジョンプリセットをCustomに設定すると
コリジョンの設定を⾃由に設定することが出来る
Collision Enabled,オブジェクト応答を後から変更できるよ
うにブループリントを編集する
https://docs.unrealengine.com/latest/JPN/Engine/Physi
cs/Collision/Reference/index.html
コリジョン反応の参照
変数の追加
変数名 変数の型 デフォルト値
CollisionChannel ECollisionChannel PhysicsBody
CollisionEnable ECollisionEnable Collision Enabled(Query and Physics)
CollisionResponse ECollisionResponse Block
配置してから編集可能なように
インスタンス編集可能の設定にする
Collision Enabledの設定を変更する処理
Collision Response to Channelの設定を変更する処理
この図だと以下のような設定になる
Collision Channle : PhyisicsBody
Collision Response : Overlap
完成図
コンパイル > 保存
51
この後に動作を確認するため、コンパイル > 保存
配置したBP_VerifyCollisionのコリジョン
設定を変更できるようになる
プレイして確認
Sphere
Cube
Collision Enableを
Physics Only(No Query Collision)に変更する
Sphere
Cube
Collision Enableを
[Physics Only(No Query Collision]に
変更する
Hitイベントが発⽣する
Collision Enableを
Query Only(No Physics Collision)に変更する
Sphere
Cube
Collision Enableを
[Query Only(No Physics Collision]に
変更する
オブジェクト応答をブロックにしてい
るにも関わらず、SphereがCubeをす
り抜けてしまう
Collision Responseを
Overlapに変更する
Sphere
Cube
Collision Responseを
[Overlap]に変更する
Overlapイベントが発⽣する
Collision Enableを
Physics Only(No Query Collision)に変更する
Sphere
Cube
Collision Enableを
[Physics Only(No Query Collision]に
変更する
Overlapイベントが発⽣しなくなる
Collision Enable
Physics : 〇
Query : 〇
Physics : 〇
Query : ×
Physics : 〇
Query : 〇
衝突する
Queryが有効Physicsが有効
貫通する
Physics : ×
Query : 〇
+ ぶつかる相⼿のCollisionChannelの
ResponseがBlockに設定されている
ぶつかる相⼿のCollisionChannelの
Responseは関係なく貫通する
Hit イベントが発⽣する条件
Physics : 〇
Query : 〇
Physics : 〇
Query : 〇 or ×
+ ぶつかる相⼿のCollisionChannelの
ResponseがBlock
両⽅ともCollision EnabledのPhysicsが
有効であること
イベントを発⽣する側のみ
[Simulation Generates Hit Events]に
チェックがついていること
Sphere Cube
イベントを発生する側
のみチェック
Overlapイベントの発⽣する条件
Sphere Cube
Physics : 〇
Query : 〇
Physics : 〇 or×
Query : 〇
+ ぶつかる相⼿のCollisionChannelの
ResponseがOverlap
イベントを発⽣させる側のCollision
EnableのQueryが有効であること
[オーバーラップイベントを発⽣させる]
に両⽅ともチェックがついていること
Object Channel, Presetを追加
する
プロジェクト設定からObject Channel,Preset
の追加を⾏うことが出来る
Trace Channelについては別の機会に説明します
新規のオブジェクトチャンネルを追加
名前 デフォルト応答
NewBlock Block
NewOverlap Overlap
NewIgnore Ignore
デフォルト応答について
コリジョンプリセットのオブジェクト応
答に追加したチャンネルが追加される
新規プリセットの追加
どんな時に追加する?
例)敵を貫通して、壁に当たると消える弾
Player:無視 Enemy:オーバーラップ Wall:ブロック
ビューポートに配置したものはコリジョンプリセットをCustomに設定すれば、⾃由に変更することが出来る
Spawnで途中発⽣させるオブジェクトでイベントを細かく設定したい場合は、Object Channelを増やすことで柔
軟に対応することが出来る
( Object Channelを増やさなくても衝突した相⼿が誰かをフィルタリングすることで対応することは可能)
参考URL
• カスタム仕様のオブジェクト タイプをプロジェクトに追加する
https://docs.unrealengine.com/latest/JPN/Engine/Physics/Collision/HowTo
/AddCustomCollisionType/index.html
• コリジョンの概要
https://docs.unrealengine.com/latest/JPN/Engine/Physics/Collision/Overview/index
.html
• コリジョン反応の参照
https://docs.unrealengine.com/latest/JPN/Engine/Physics/Collision/Reference/inde
x.html
• UE4 マテリアル体験 + マテリアルを編集するブループリント
を作成する
http://denshikousakubu.com/2017/06/11/20170613_BP_EditableMaterial/
https://www.youtube.com/user/gansaibow
http://denshikousakubu.com/
https://twitter.com/gansaibow

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例
メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例
メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例
 
UE4でマルチプレイヤーゲームを作ろう
UE4でマルチプレイヤーゲームを作ろうUE4でマルチプレイヤーゲームを作ろう
UE4でマルチプレイヤーゲームを作ろう
 
[UE4]マテリアルの注意すべきこと!~テクスチャロードとSwitch~
[UE4]マテリアルの注意すべきこと!~テクスチャロードとSwitch~[UE4]マテリアルの注意すべきこと!~テクスチャロードとSwitch~
[UE4]マテリアルの注意すべきこと!~テクスチャロードとSwitch~
 
猫でも分かるUE4.22から入ったSubsystem
猫でも分かるUE4.22から入ったSubsystem 猫でも分かるUE4.22から入ったSubsystem
猫でも分かるUE4.22から入ったSubsystem
 
猫でも分かる UE4のAnimation Blueprintの運用について
猫でも分かる UE4のAnimation Blueprintの運用について猫でも分かる UE4のAnimation Blueprintの運用について
猫でも分かる UE4のAnimation Blueprintの運用について
 
猫でも分かるUE4のポストプロセスを使った演出・絵作り
猫でも分かるUE4のポストプロセスを使った演出・絵作り猫でも分かるUE4のポストプロセスを使った演出・絵作り
猫でも分かるUE4のポストプロセスを使った演出・絵作り
 
第1回UE4勉強会 in 大阪 - エンジン改造ってどうなの?
第1回UE4勉強会 in 大阪 - エンジン改造ってどうなの?第1回UE4勉強会 in 大阪 - エンジン改造ってどうなの?
第1回UE4勉強会 in 大阪 - エンジン改造ってどうなの?
 
UE4×Switchで60FPSの(ネットワーク)対戦アクションをなんとかして作る! | UNREAL FEST EXTREME 2020 WINTER
UE4×Switchで60FPSの(ネットワーク)対戦アクションをなんとかして作る!  | UNREAL FEST EXTREME 2020 WINTERUE4×Switchで60FPSの(ネットワーク)対戦アクションをなんとかして作る!  | UNREAL FEST EXTREME 2020 WINTER
UE4×Switchで60FPSの(ネットワーク)対戦アクションをなんとかして作る! | UNREAL FEST EXTREME 2020 WINTER
 
[4.20版] UE4におけるLoadingとGCのProfilingと最適化手法
[4.20版] UE4におけるLoadingとGCのProfilingと最適化手法[4.20版] UE4におけるLoadingとGCのProfilingと最適化手法
[4.20版] UE4におけるLoadingとGCのProfilingと最適化手法
 
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
 
UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~
UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~
UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~
 
なぜなにFProperty - 対応方法と改善点 -
なぜなにFProperty - 対応方法と改善点 -なぜなにFProperty - 対応方法と改善点 -
なぜなにFProperty - 対応方法と改善点 -
 
UE4における大規模背景制作事例(コリジョン編)
UE4における大規模背景制作事例(コリジョン編) UE4における大規模背景制作事例(コリジョン編)
UE4における大規模背景制作事例(コリジョン編)
 
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動についてUE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
 
日本一詳しい人が教えるUE4
日本一詳しい人が教えるUE4日本一詳しい人が教えるUE4
日本一詳しい人が教えるUE4
 
Unreal Engine 4を使って地球を衛る方法
Unreal Engine 4を使って地球を衛る方法Unreal Engine 4を使って地球を衛る方法
Unreal Engine 4を使って地球を衛る方法
 
60fpsアクションを実現する秘訣を伝授 基礎編
60fpsアクションを実現する秘訣を伝授 基礎編60fpsアクションを実現する秘訣を伝授 基礎編
60fpsアクションを実現する秘訣を伝授 基礎編
 
[CEDEC2018] UE4で多数のキャラクターを生かすためのテクニック
[CEDEC2018] UE4で多数のキャラクターを生かすためのテクニック[CEDEC2018] UE4で多数のキャラクターを生かすためのテクニック
[CEDEC2018] UE4で多数のキャラクターを生かすためのテクニック
 
UE4における大規模背景制作事例 描画特殊表現編
UE4における大規模背景制作事例 描画特殊表現編UE4における大規模背景制作事例 描画特殊表現編
UE4における大規模背景制作事例 描画特殊表現編
 
UE4のスレッドの流れと Input Latency改善の仕組み
UE4のスレッドの流れとInput Latency改善の仕組みUE4のスレッドの流れとInput Latency改善の仕組み
UE4のスレッドの流れと Input Latency改善の仕組み
 

Mais de Tatsuya Iwama

Mais de Tatsuya Iwama (17)

ゲームエンジンの文法【UE4 練習】No.007 スタティックメッシュエディタ: 門を通過できるようにコリジョンを作成する
ゲームエンジンの文法【UE4 練習】No.007 スタティックメッシュエディタ: 門を通過できるようにコリジョンを作成するゲームエンジンの文法【UE4 練習】No.007 スタティックメッシュエディタ: 門を通過できるようにコリジョンを作成する
ゲームエンジンの文法【UE4 練習】No.007 スタティックメッシュエディタ: 門を通過できるようにコリジョンを作成する
 
ゲームエンジンの文法【UE4】No.007 スタティックメッシュエディタ:スタティックメッシュアセットとアクターの操作
ゲームエンジンの文法【UE4】No.007 スタティックメッシュエディタ:スタティックメッシュアセットとアクターの操作ゲームエンジンの文法【UE4】No.007 スタティックメッシュエディタ:スタティックメッシュアセットとアクターの操作
ゲームエンジンの文法【UE4】No.007 スタティックメッシュエディタ:スタティックメッシュアセットとアクターの操作
 
ゲームエンジンの文法【UE4】No.006 3次元座標(直交座標系) ,UE4の単位,アウトライナ,レイヤー
ゲームエンジンの文法【UE4】No.006 3次元座標(直交座標系) ,UE4の単位,アウトライナ,レイヤーゲームエンジンの文法【UE4】No.006 3次元座標(直交座標系) ,UE4の単位,アウトライナ,レイヤー
ゲームエンジンの文法【UE4】No.006 3次元座標(直交座標系) ,UE4の単位,アウトライナ,レイヤー
 
ゲームエンジンの文法【UE4 練習 】No.005 Gameplay Frameworkの理解
ゲームエンジンの文法【UE4 練習 】No.005 Gameplay Frameworkの理解ゲームエンジンの文法【UE4 練習 】No.005 Gameplay Frameworkの理解
ゲームエンジンの文法【UE4 練習 】No.005 Gameplay Frameworkの理解
 
ゲームエンジンの文法【UE4】No.005 Gameplay Frameworkの理解
ゲームエンジンの文法【UE4】No.005 Gameplay Frameworkの理解ゲームエンジンの文法【UE4】No.005 Gameplay Frameworkの理解
ゲームエンジンの文法【UE4】No.005 Gameplay Frameworkの理解
 
ゲームエンジンの文法【UE4】No.004 Asset(資産)の操作: インポート、移行、リファレンスビューア
ゲームエンジンの文法【UE4】No.004 Asset(資産)の操作: インポート、移行、リファレンスビューアゲームエンジンの文法【UE4】No.004 Asset(資産)の操作: インポート、移行、リファレンスビューア
ゲームエンジンの文法【UE4】No.004 Asset(資産)の操作: インポート、移行、リファレンスビューア
 
ゲームエンジンの文法【UE4】No.003 最初のプロジェクト: UE4 Editorのインターフェイスを学ぶ
ゲームエンジンの文法【UE4】No.003 最初のプロジェクト: UE4 Editorのインターフェイスを学ぶゲームエンジンの文法【UE4】No.003 最初のプロジェクト: UE4 Editorのインターフェイスを学ぶ
ゲームエンジンの文法【UE4】No.003 最初のプロジェクト: UE4 Editorのインターフェイスを学ぶ
 
ゲームエンジンの文法【UE4】No.002 Ue4 Epic Games Launcherについて
ゲームエンジンの文法【UE4】No.002 Ue4 Epic Games Launcherについてゲームエンジンの文法【UE4】No.002 Ue4 Epic Games Launcherについて
ゲームエンジンの文法【UE4】No.002 Ue4 Epic Games Launcherについて
 
過疎地域で頑張るクリエイターの話
過疎地域で頑張るクリエイターの話過疎地域で頑張るクリエイターの話
過疎地域で頑張るクリエイターの話
 
UE4 完成プロジェクトを再構築する方法
UE4 完成プロジェクトを再構築する方法UE4 完成プロジェクトを再構築する方法
UE4 完成プロジェクトを再構築する方法
 
UE4でPongを作成するチュートリアル
UE4でPongを作成するチュートリアルUE4でPongを作成するチュートリアル
UE4でPongを作成するチュートリアル
 
算数ゲーム Part3 UE4のブループリントでプログラム文法を1日で体験する
算数ゲーム Part3 UE4のブループリントでプログラム文法を1日で体験する算数ゲーム Part3 UE4のブループリントでプログラム文法を1日で体験する
算数ゲーム Part3 UE4のブループリントでプログラム文法を1日で体験する
 
算数ゲーム Part2 UE4のブループリントでプログラム文法を1日で体験する
算数ゲーム Part2 UE4のブループリントでプログラム文法を1日で体験する算数ゲーム Part2 UE4のブループリントでプログラム文法を1日で体験する
算数ゲーム Part2 UE4のブループリントでプログラム文法を1日で体験する
 
算数ゲーム Part1 UE4のブループリントでプログラム文法を1日で体験する
算数ゲーム Part1 UE4のブループリントでプログラム文法を1日で体験する算数ゲーム Part1 UE4のブループリントでプログラム文法を1日で体験する
算数ゲーム Part1 UE4のブループリントでプログラム文法を1日で体験する
 
Masterpiece VRから UE4
Masterpiece VRから UE4Masterpiece VRから UE4
Masterpiece VRから UE4
 
WordPressでファビコンを設定する
WordPressでファビコンを設定するWordPressでファビコンを設定する
WordPressでファビコンを設定する
 
お問い合わせフォームを設置
お問い合わせフォームを設置お問い合わせフォームを設置
お問い合わせフォームを設置
 

UE4 コリジョン検証 -HitとOverlapイベントが発生する条件について-