質問: OnCollisionEnterの中にコルーチンを作動させて、 何かしらの処理をしたいのですが、 StartCoroutine内に関数名を入れてもエラーになり、 どうしたら良いか困っている次第です。 詳しい方がいらっしゃったら解決方法を教えて頂きたいですm(_ _)m ``` public class Test : MonoBehaviour { void Start () { StartCoroutine ("Sample"); } IEnumerator Sample() { //ここのメゾットに処理をしたいのではなく //処理内容 省略 } Void OnCollisionEnter(collision collision) { //こちらに処理をしたいのですが、("Sample")の部分に ("OnCollisionEnter")と記述しても、エラーが出ました。 //処理内容 省略 } } ```
回答: `StartCoroutine`で呼べるのはコルーチン(IEnumerator)を返すメソッドなので、 voidを返すOnCollisionEnterは呼べません。 ~~そもそもOnCollisionEnterは衝突時にUnityから勝手に呼ばれるものです。 なのでOnCollisionEnterはコルーチンにならないし、もしコルーチンにしたとしても衝突時に呼ばれなくなるのでOnCollisionEnterである必要が無いです。 「OnCollisionEnterの中にコルーチンを作動させて」の意図がよく分かりませんが、単純に衝突時にコルーチンを発動したいなら、素直にOnCollisionEnterの中で`StartCoroutine`を使ってください。~~ simapikoさんの回答の通り、 `IEnumerator OnCollisionEnter (Collision collision) { }` とすることで衝突も含めて正常に動作することを確認しました。 (普通に出来るんですね、知らなかったです)