質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

2回答

3519閲覧

OnTriggerStay2Dで同じタグ・レイヤーの複数のオブジェクトの位置情報を取得したい

Werdna

総合スコア14

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2016/04/09 22:49

編集2016/04/11 00:35

Unity2Dでアクションゲームの敵AIを作っています。自動生成されたダンジョン巡回機能を実装しようと思い、rayのみで実装したのですがWebGLだとかなり重くなってしまいました。そこでmobに大きい範囲のColliderをつけIsTriggerをOnにしてダンジョンの入り口や曲がり角などに設置したチェックポイントの座標を取ろうとしています。
手順としてはOnTriggerStay2Dで複数のチェックポイントの座標をとりそこに壁とチェックポイントのレイヤーを取得できるようにしたRayCastAllを出します。
配列の先頭にチェックポイントの情報が入ったらその座標に移動、このような感じの事を繰り返させる感じです。
しかし検索等をしてみたのですがOnTrigger2Dに入った同じタグ同じレイヤーのオブジェクトを複数取る方法が見つかりませんでした。
この方法が知りたいです。
オブジェクトの名前で判別する方法もありますが、ダンジョンが自動生成なためチェックポイントがいくつ出来るかわからないので出来ればそれ以外の方法で取得したいです。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

アドバイスからコライダーの大きさを変えていってOnTriggerEnterで取るという方法を思いつきました。ありがとうございます。

投稿2016/04/23 17:06

Werdna

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

この場合OnTriggerStay2DではなくOnTriggerEnter2DとOnTriggerExit2Dを使って、
・Enterしたら(タグ、レイヤーを判定した上で)オブジェクトを変数A(Listか配列)に保存
・Exitしたらそのオブジェクトを変数Aから削除
・任意のタイミングで変数Aに含まれているオブジェクトに対しRayCastAll
という方法はいかがでしょうか?

OnTigger系は1回に1つ分のオブジェクトしか取得されませんが、
逆を言えば毎フレーム毎・1オブジェクト毎にOnTriggerStay2Dが呼ばれているのではないかと思います(未検証ですが……)。

投稿2016/04/12 06:28

sakura_hana

総合スコア11427

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問