読者です 読者をやめる 読者になる 読者になる

(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

衝突位置にエフェクトを発生させる【Unity】


このエントリーをはてなブックマークに追加

はじめに

衝突した位置にエフェクトを出したいけど衝突した座標が分からない!

という場合のやり方をご紹介します。


衝突位置の検出


衝突位置は以下のようにCollisionの(ContactPoint)contactsから取得する事ができます。

void OnCollisionEnter (Collision collision)
{
  foreach (ContactPoint point in collision.contacts) {
    //衝突位置
    Debug.Log (point);
 }
}



なお、2Dの場合も同様にCollision2Dの(ContactPoint2D)contactsから取得する事ができます。


エフェクト発生

衝突位置が分かったので、その場所にエフェクトを生成すれば目的達成です!

実際に2Dでやってみると以下のような感じです。


f:id:kan_kikuchi:20150316071831g:plain


プログラムは以下通りです。



上記のプログラムを下のモンスターオブジェクトにアタッチし、

両者にCollider、上のモンスターにRigidbody2Dをアタッチしています。


また、エフェクトをそのまま出すとモンスター画像の後ろに行ってしますので、

以下の記事にあるEffectLayerSetterをアタッチしています。



簡単ですね!ね!!


おわりに

上記参考サイトの記事を書いたのはカンさんですが、僕もカンさんです。

しかし、特に関係はありません。

ドウデモイイネ!