「Unity/3d/collider/接触」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→接触範囲を変更) |
(→サンプル) |
||
(同じ利用者による、間の3版が非表示) | |||
行3: | 行3: | ||
#3d/Planeを作成 | #3d/Planeを作成 | ||
− | #3d/ | + | #3d/Sphereを作成し、AddComponentで、rigidbodyを追加 |
− | # | + | #以下Sphere.csをSphereオブジェクトに追加 |
− | + | Sphere.cs | |
<pre> | <pre> | ||
− | public class | + | using UnityEngine; |
+ | public class Sphere : MonoBehaviour | ||
{ | { | ||
// 重なり始めたとき | // 重なり始めたとき | ||
void OnCollisionEnter(Collision collision) | void OnCollisionEnter(Collision collision) | ||
{ | { | ||
+ | if (collision.gameObject.name == "Plane") | ||
+ | { | ||
+ | GetComponent<Renderer>().material.color = Color.yellow; | ||
+ | } | ||
} | } | ||
// 重なり中のとき | // 重なり中のとき | ||
行39: | 行44: | ||
*SphereColliderのradiusを0.5から、1とかに変更すると、2倍の範囲で接触判定される。 | *SphereColliderのradiusを0.5から、1とかに変更すると、2倍の範囲で接触判定される。 | ||
*もしくは、scaleを2とかに変えても、2倍の範囲で接触判定される。(こちらは、見た目も2倍) | *もしくは、scaleを2とかに変えても、2倍の範囲で接触判定される。(こちらは、見た目も2倍) | ||
+ | ==接触範囲確認== | ||
+ | *ColliderがAttachされてるオブジェクトを選択すると、緑フレームで表示される | ||
+ | *縦長の丸オブジェクトであれば、CapseleColliderとかで、Centerを(0, 1, 0)とかにして、Radiusを0.2で、Heightを2にすれば良いかも。 |
2023年4月4日 (火) 01:09時点における最新版
サンプル
床にボールが、触れたときに、色を変える
- 3d/Planeを作成
- 3d/Sphereを作成し、AddComponentで、rigidbodyを追加
- 以下Sphere.csをSphereオブジェクトに追加
Sphere.cs
using UnityEngine; public class Sphere : MonoBehaviour { // 重なり始めたとき void OnCollisionEnter(Collision collision) { if (collision.gameObject.name == "Plane") { GetComponent<Renderer>().material.color = Color.yellow; } } // 重なり中のとき void OnCollisionStay(Collision collision) { if (collision.gameObject.name == "Plane") { GetComponent<Renderer>().material.color = Color.green; } } // 重なりから抜けたとき void OnCollisionExit(Collision collision) { if (collision.gameObject.name == "Plane") { GetComponent<Renderer>().material.color = Color.black; } } }
参考:https://xr-hub.com/archives/5127
接触範囲を変更
- SphereColliderのradiusを0.5から、1とかに変更すると、2倍の範囲で接触判定される。
- もしくは、scaleを2とかに変えても、2倍の範囲で接触判定される。(こちらは、見た目も2倍)
接触範囲確認
- ColliderがAttachされてるオブジェクトを選択すると、緑フレームで表示される
- 縦長の丸オブジェクトであれば、CapseleColliderとかで、Centerを(0, 1, 0)とかにして、Radiusを0.2で、Heightを2にすれば良いかも。