5丁目らへんのさよねん家

UnityとBlender初心者です。つまづいたこととか日常とか雑談とかいろいろ。

【Unityつまづき】Triggerのなぞ

こんにちは。

前回、当たり判定のプログラムを作ってて、IsTriggerのチェック外したらうまくいったけどなんでって話。
詳しくはこちら→【Unityつまずき】 当たり判定がうまくいかない - 5丁目らへんのさよねん家

答えはスクリプトにございました。

前回の当たり判定スクリプトがこちら

 void OnCollisionEnter2D(Collision2D collision)    {
        //みかんだったらスコアを加算する
        if (collision.gameObject.tag == "mikan")
        {
            //スコア加算
            score += 100;
            //スコアの更新
            ScoreText.text = "Sco: " + score.ToString();
        }
        Destroy(collision.gameObject);
        
    }

このOnCollisionEnter~ってところで接触したところをチェックしてたわけです。

んで、ゲームとして当たり判定をさせたいけど物理的な衝突反応はしてほしくないってときにTriggerを使うわけですけれども、

このTrigerを使った接触のときは、通常の接触とは別のイベントをつかわないかんらしい。

てことでスクリプトを訂正しました。

void OnTriggerEnter2D(Collider2D col)
    {
        //みかんだったらスコアを加算する
        if (col.gameObject.tag == "mikan")
        {
            //スコア加算
            score += 100;
            //スコアの更新
            ScoreText.text = "Sco: " + score.ToString();
        }
        Destroy(col.gameObject); //みかん消去
        
    }

OnCollisionEnter~のところがOnTriggerEnter~に変わりまして引数もCollisionからColliderに変わります。

んで、IsTriggerにチェックをいれる
f:id:sayone128:20150618132854p:plainf:id:sayone128:20150618132854p:plain

無事動きました。

働きは同じでも、トリガーを使った時のイベントとトリガーを使わないときのイベントは違うってことですね。

初歩的なことなんですがきちんと把握できてなかったためごっちゃになっていました…