unityには、先程の OnCollisionEnter()とは 別のOnTriggerEnter()があるらしい。
先程の OnCollisionEnter() では、Rigidbodyどうしの衝突を判定できましたが OnTriggerEnter()では、衝突することなく、通過?を判定できるみたい。
以下では、3D Sphereをカーソルキーで動かし、 他の 3D Sphere と衝突?した場合、他の 3D Sphere の色を変更します。
Step 1 - 手玉となる 赤色 3D Sphere 追加
先程のentryと全く同様、「Add Component」から「Rigidbody」を追加します。
Step 2 - 的玉となる 白色 3D Sphere 追加
的玉と判定する為「Others」というタグを設定ますが、「Rigidbody」は追加しません。
代わりに、Sphere Colliderの「Is Trigger」を ONにします。
Step 3 - c# script作成
using System.Collections; using System.Collections.Generic; using UnityEngine; public class NewBehaviourScript : MonoBehaviour { bool f = true; Vector3 cv = new Vector3(0f, 1f, -5f); Rigidbody rb = null; void Start(){ rb = GetComponent<Rigidbody>(); } void Update(){ var sv = transform.position; sv.y = 1f; Camera.main.transform.position = sv + cv; var x = Input.GetAxis("Horizontal"); var y = Input.GetAxis("Vertical"); var v = new Vector3(x, 0, y); rb.AddForce(v); } void OnTriggerEnter(Collider collider){ if (collider.gameObject.tag == "Other"){ //色を変更します var r = collider.gameObject.GetComponent<Renderer>(); r.material.color = new Color(0f, 0f, 0f, 0.25f); r.material.SetFloat("_Metallic", 0f); } } }