OnCollisionExitを使えば、オブジェクトから離れたときにアクションをつけることができます。
クリックでCubeに力を加え、着地しているときと、浮上しているときで色を変えてみます。
関連記事:
領域に入っている間と離れたときに発生
OnCollisionEnterとOnTriggerEnterの違い
触れている間はイベントを発生させる
着地していればジャンプ可能
床から離れたら色を変える
まずはPlaneオブジェクト(平面)とCubeを用意しましょう。
Cubeにはリジッドボディを追加します。
Cubeオブジェクトに、ClickUp.csを作成します。
スクリプトを書きましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ClickUp : MonoBehaviour { private Rigidbody rb; public float upForce = 200f; void Start() { rb = GetComponent<Rigidbody>(); } void Update() { if(Input.GetMouseButtonDown(0)) { rb.AddForce(new Vector3(0,upForce,0 )); } } //床から離れたとき private void OnCollisionExit(Collision collision) { if (collision.gameObject.name == "Plane" ) { GetComponent<Renderer>().material.color = Color.red; } } //床に着地したとき private void OnCollisionEnter(Collision collision) { if (collision.gameObject.name == "Plane" ) { GetComponent<Renderer>().material.color = Color.green; } } } |
OnCollisionEnterは平面オブジェクトと接したとき。
逆に、OnCollisionExitは平面オブジェクトから離れたとき。
それぞれのアクションを、赤と緑で分けました。
プレイしてみましょう。
関連記事:
領域に入っている間と離れたときに発生
OnCollisionEnterとOnTriggerEnterの違い
触れている間はイベントを発生させる
着地していればジャンプ可能