【Unity】オブジェクト同士が衝突している間にイベントを発生させる|OnCollisionStay


オブジェクト同士が衝突している間にイベントを発生させる方法をご紹介します。

オブジェクトが衝突していることを認識する際にも使用できるため、使用方法を知っていると非常に便利です。

今回はSphere(球)がPlane(平面)と衝突している間だけSphereの色を青に、離れた瞬間に赤にするシーンを作成していきます。

本記事でご紹介する内容は以下の通りです。

  • OnCollisionStayの使用方法

OnCollisionStayの使用方法

オブジェクトが衝突している間、イベントを発生させる関数はOnCollisionStayです。

まずはじめにSphere(球)とPlane(平面)を以下のような位置関係で設置して、SphereにRigidbodyを追加します。

Rigidbodyを追加したら、SphereをバウンドさせるためにPhysicMaterialを追加します。

ここまでの操作方法はOnCollisionExitの使用方法を紹介したこちらの記事で詳しくご紹介しています。

床・球位置関係

それでは実際にOnCollisionStayを使用してオブジェクト同士が衝突している間にイベントを発生させたいと思います。

HierarchieビューのSphereを選択してください。次に、Inspectorビュー最下部のAddComponentからNewScriptを選択して、新しいスクリプトを作成してください。

新しく作成するスクリプトの名前は任意ですが、今回は「OnCollisionStaySample」とします。

作成したスクリプトをエディターで開いて、以下のように編集してください。

今回は離れたときに色を変えるためにOnCollisionExitも使用しています。OnCollisionExitの詳細はこちらの記事をご参考ください。

では実際に実行して確認してみましょう。

OnCollisionStayCheck

SphereがPlaneから離れた瞬間に色が赤になり、バウンドが終わりPlaneと衝突している間、青に変化しているのがわかると思います。

まとめ

OnCollisionStayについてご紹介してきました。

これまで他にOnCollisionEnter、OnCollisionExitもご紹介してきました。どの関数もとても簡単に衝突判定を実装できることがわかると思います。

ご自身が必要な関数を適切に用いて、ゲーム開発をスムーズに進めてみてください。


この記事はいかがでしたか?よければシェアをお願いします。

Yuya Furui

Twitterはじめました @FuruiYuya