前提・実現したいこと
OnTriggerStay2Dが、接触時にきちんと毎フレーム呼ばれるように修正したい。
発生している問題・エラーメッセージ
// 以下, PlayerCtrlスクリプトからのDebug.Log()箇所の切り抜き ... void Update () { if (InputManager.Instance.UseButtonDown) Debug.Log("UseButtonDown By PlayerCtrl.Update()"); ... // 調査用コライダー処理 private void OnTriggerStay2D(Collider2D collision) { Debug.Log("OnTriggerStay2D() called"); if (InputManager.Instance.UseButtonDown) Debug.Log("UseButtonDown By PlayerCtrl.OnTriggerStay2D()"); // DEBUG 毎フレーム呼んでくれない? ...
上記のようにして調べたところ、画像の「ラジオ」にプレイヤーの調査用コライダーを入れた際、OnTriggerStay2D()
が正しく呼ばれていないようでした。
ラジオのコライダーに侵入したコンマ数秒間だけ、OnTriggerStayが呼ばれ、その後はうんともすんとも言わないようです。
一度ラジオから距離を取り、再びコライダーをぶつけると、同様に動作します。
また「アイテム使用ボタン」を連打しながら、同様にチェックしたところ、「キューを溜め込んでいる」というのでしょうか、コライダーを再度ぶつけてボタンを押下した際に、数回分まとめて押されたことになってしまいます。
(こちらは要検証。操作系統のバグかもしれませんが、Update().Debug.Log()で確認する限りは正しく取得できています。)
補足情報(FW/ツールのバージョンなど)
このプロジェクトを作成した初期段階から、よく現れる症状でして、その度に今回のようなデバッグを行ってきましたが、原因究明できませんでした。
大方組み上がってきて、自力で解決できそうにないと判断して、今回質問させていただいた次第です。
ご協力いただければ、幸いです。よろしくお願いいたします。
Unity 2018.4.11
回答1件
あなたの回答
tips
プレビュー