こんにちは。プログラミング初心者です。Unityでゲーム作ってます。
クリックで進むテキストシステムを作ってる際に、マウスのクリック判定の取り方について思ったことをまとめてみます
OnMouseButton
手軽さだけはダントツかも?
クリック対象としたいオブジェクトにColliderとOnMouseButtonを含んだScriptを割り当ててあげるだけで動作する。お手軽。
ただし、OnMouseButtonを持っているオブジェクトへのクリック判定はそのオブジェクトの間に何があっても判定が入ってしまうっぽい…
(Ignore Raycastの指定をしておけば無視してくれるらしい)
そのため、判定が入ってほしくないときは別のオブジェクトなどで遮れるようにしたいなどの場合は他の方法を使ったほうが良いかもしれません。
ちなみに、ChatGPTでマウスクリック判定のコードを吐かせると、ほぼほぼこの判定方法を吐き出して来ました。
EventTrigger
発生させたいイベントを自分で指定出来るコンポーネントです。
使用時には、
- Hierarchyに「EventSystem」を設置
- MainCameraにPhysics Raycasterを追加
- 2Dゲームの場合は、2DnoRaycasterを使います
- オブジェクトにEventTriggerコンポーネントを追加
- オブジェクトにColliderを付ける
が必ず必要!!!
どれか忘れると途端に動かない(n敗)
今作ってるゲームのマウスクリックはこれで取っています。
Raycast
Ray(光線)を飛ばして、Colliderと接触させて判定を取る方法です。
Layermaskを使えば、接触させたくないLayerを無視させたり出来るっぽい。
RaycastをUIのImageにぶち当てるのに一苦労したので、別記事にまとめました。
Button
Buttonコンポーネントをアタッチすることで、何でもButtonに変えてくれる便利なやつです。
Buttonなので、デフォルトで押したらちょっと色が変わって離したらもとに戻るみたいな設定が付いてきます。
コメント