[過去ログ] 【ゲームエンジン】Unityなんでも質問スレpart12 (1002レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
328(2): 2023/11/30(木)10:50 ID:CMyAP9YG(1/17) AAS
質問です。2Dゲーム制作においてですが
オブジェクト自体の当たり判定とは別にトリガー用の判定エリアも設けたい場合
ひとつのオブジェクトにBox Collider 2Dを2個つけるということをしている人がいます。
これはなんら普通のことでしょうか?それともあまりお勧めできることではない感じですか?
331: 2023/11/30(木)11:29 ID:CMyAP9YG(2/17) AAS
>>329 >>328
そうなんですか、2つどころか複数つけても問題ないのですね
わかりました。遠慮なくつけようと思います。
ちなみに、今、Box Collider 2Dを2個つけてみたんですが
両方ともBox Collider 2Dという名前のままなんで
区別がついてないですよね?
名前の変更もできない感じですが
省3
332: 2023/11/30(木)11:39 ID:CMyAP9YG(3/17) AAS
え?あれ?
自分今勘違いしているかもです。
これは、追加するBoxCollider2Dにはそれ用のオブジェクトを作って
そこに貼り付けたスプライトで管理するのか?
それなら確かに、BoxCollider2Dは区別しなくてもいいわけですが。。。
ひとつのオブジェクトのスプライトの中で2つのBoxCollider2Dを管理できると思ってるんですが。。。
333: 2023/11/30(木)11:44 ID:CMyAP9YG(4/17) AAS
つまり、ひとつのオブジェクトに
当たり判定とトリガー判定のためのBoxCollider2Dが必要だと思ったら
そのオブジェクトでは当たり判定のBoxCollider2Dをつけて、
もうひとつはトリガー用のBoxCollider2Dを貼り付けたオブジェクトを別につくって
そのふたつのオブジェクトをいちいち合わせて考えるってことですかね?
自分のイメージだとぜんぜん違うんですが。効率悪そう。。。
普通に、ひとつのオブジェクトに2つBoxCollider2Dをくっつけて
省1
334: 2023/11/30(木)11:53 ID:CMyAP9YG(5/17) AAS
あー、ついに来たか。
親オブジェクト、子オブジェクトとか、それかー。それ使うんですね。
鬼門じゃないんですか、これは。理解できるかなー。
335(1): 2023/11/30(木)12:01 ID:CMyAP9YG(6/17) AAS
ゲームオブジェクトには複数のコライダーを配置できますが、
その場合、個別にどのコライダーがヒットしたかを検出することができません
しかし、解決策はあります
ゲームオブジェクトの子オブジェクトを作成してそこに各コライダーをアタッチすること、
コライダーがアタッチされているゲームオブジェクトにさらに検出用のスクリプトをアタッチすることで実現することができます
↑
これですよね?
省2
337: 2023/11/30(木)12:54 ID:CMyAP9YG(7/17) AAS
>>336
>Unity2022.2からCollision Layer Overrideという
>オブジェクトごとに特定のレイヤーと衝突するかの設定が出来る機能が追加
うおおおおおおおおおおおおおおおお!!
自分osの問題で2021なんです、、、泣きます!!!!!
340: 2023/11/30(木)13:42 ID:CMyAP9YG(8/17) AAS
>>338
ありがとうございます。
複数のコライダーを順番に配列にいれといて管理するんですね?
foreachで回してカウントしてトリガーを返してきたカウントからどのコライダーか判別すると。
これ、配列に入るコライダーの順番は、インスペクタの並び順ですか?
つまり、例えば、一部のコライダーのインスペクタを触りたいときは
c2ds[1].isTrigger = true;とかでいけますよね?
341: 2023/11/30(木)13:56 ID:CMyAP9YG(9/17) AAS
というのも、自分の作ってるゲームでは
オブジェクトのBoxCollider2DのisTriggerのon,off
ちょくちょく切り替えるようにしてるんで
>>338さんのを導入するとしたら
今のBoxCollider2Dを配列入れ込む話になるんで
ちょっとどうなるんだろう、って。
今はBoxCollider2Dひとつだけなんで、BoxCollider2D bc;で
省2
343: 2023/11/30(木)14:34 ID:CMyAP9YG(10/17) AAS
enableてオブジェクトのアクティブ、非アクティブ化にだけ使用してるみたいです。
例えば「Unity isTrigger 切り替え enable」でぐぐってみましたが
enableでBoxColliderのisTriggerを切り替えてるケースが見当たらず
みんな、だいたいGetComponent<Collider>().isTrigger = false;的なことやってるみたいです。
344: 2023/11/30(木)14:40 ID:CMyAP9YG(11/17) AAS
自分で調べた感じですがenableはGetComponent<Renderer>().enabled = false;とか見るに
コンポーネントまるごとチェックをはずしたり、したい場合に使うんじゃないでしょうか
BoxCollider2Dのアクティブのチェックを外したい場合とか。
自分はBoxCollider2Dの、isTriggerのチェックを外したいとかなんで
enableは使わない感じじゃないでしょうか
345(1): 2023/11/30(木)14:48 ID:CMyAP9YG(12/17) AAS
あと、>>338のコードを読み解こうと頑張っているんですが
ContactFilter2Dってどんなものなのか、どなたか教えて頂けないでしょうか。
なにが返ってくるのか検索してもぜんぜん解説が無いのです
利用しているコードはあるんですが、どういうものなのかの説明がされてなくて
リファレンスも英語のものだけ?しか見当たらず、ちょっとなんなのかわからず
検索結果からしても、これマニアックなんですかね、使うの。
350: 2023/11/30(木)18:16 ID:CMyAP9YG(13/17) AAS
>>349
>元々、どのコライダーが当たったのか?
>が欲しかったんだよね?
>なら読み解くとかいらんことしないで使えばいいんじゃね?
そうです。しかし、読み解けない状態、つまりはブラックボックス状態だと
うまく機能しない場合自分でどういう状況かわからないので、使わせて頂いても危険なんですよね。
例えば、現在記載してもらった>>338のコードを導入して
省10
351: 2023/11/30(木)18:31 ID:CMyAP9YG(14/17) AAS
_countは、どのBoxCollider2Dかを教えてくれる役割ですよね?
if(_bc1.IsTouching(_bc2)){
print(_count );
}
print();をココだけに記述している状態。
で、地面のオブジェクトにはふたつのBoxCollider2Dのつけており
上部のBoxCollider2Dはtriggerにチェックを入れていて通り抜ける。
省7
357(1): 2023/11/30(木)20:06 ID:CMyAP9YG(15/17) AAS
>>352
>相手もいずトリガー状態やろ
いいえ、違います。
そんな見落としは致しません。。。
>あとコライダーのoffsetトル手もあるよ
Offsetから判断させるってことですね?
最悪その方法ですよね。。
省8
360(1): 2023/11/30(木)20:25 ID:CMyAP9YG(16/17) AAS
>>358
そうです。そのスイッチとして地面の当たり判定とは別に
もう一個BoxCollider2Dをつけようかと。
地面のオブジェクトにこのスイッチをつけとくのは大前提です。
>>359
>地面のオブジェクトとは別に透明な当たり判定つけて
はい。当初は調べる中で、
省7
362: 2023/11/30(木)20:45 ID:CMyAP9YG(17/17) AAS
>>361
そうですよね。素直にそうします。
>>338さんのコード、なんか画期的っぽくて
解読したかったのですが。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 1.495s*