##経緯
とある理由により物理エンジンを使わずに移動させることにしたのですが、
移動させ、そこにオブジェクトがあればその移動を取り消す
という動作を作成しようと思いました。
##コード
C#
1using UnityEngine; 2 3public class test01 : MonoBehaviour{ 4 5 public Transform transform; 6 int i = 0; //デバッグ用 7 8 void Start () { 9 transform = this.GetComponent<Transform>(); 10 } 11 12 void Update () { 13 i++; 14 transform.position = new Vector3(transform.position.x,transform.position.y,transform.position.z + 0.1f); 15 16 //ポイントA 17 18 print("Update called (" + i + ")"); 19 } 20 21 private void OnCollisionEnter ( Collision collision ) { 22 print("OncollisionEnter called (" + i + ")"); 23 } 24}
●移動するオブジェクト
test01.csのセット
box collider(is trigger=false)のセット
rigitbodyのセット
座標(0,0,0)に設置
●移動しないオブジェクト
box collider(is trigger=false)のセット
座標(0,0,10)に設置
##実行した時のログ
Update called(1) Update called(2) ・・・(略)・・・ Update called(89) Update called(90) OncollisionEnter called(90) Update called(91) ・・・(略)・・・
##実現したいこと
ログにもあるように、OnCollisionEnterを使えば接触判定はできます。
ただ、今回接触判定をしたいのは、update内の「ポイントA」の箇所になります。
OnCollisionEnterはupdateを最後まで実行した後に呼び出されてしまうので、
ポイントAで把握することが出来ません。
色々調べては見たものの、OnCollisionEnter以外で接触判定できそうなものが見当たらなかったのですが、
何か方法はないでしょうか?
(相手のオブジェクトに影響を与えたり、情報を得たりすることはないので、「ある」「ない」の判断が出来ればそれでいいです。)
##環境・補足
unity2019.2.1f1
実際の環境でもcolliderはbox colliderを使う予定です。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/09 05:11
2019/09/09 05:16
2019/09/09 06:13
2019/09/09 07:59
2019/09/09 10:44
2019/09/10 01:26