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

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

【Unityつまずき】 当たり判定がうまくいかない

さっそくつまずいたのでメモしておこうと思います。

 

f:id:sayone128:20150617191515p:plain

今卒論で制作しているゲームなんですが、内容を簡単にいうと、

長与町のイメージキャラクターであるミックン(真ん中の帽子かぶってるやつ)が、みかんやらオリーブやらの特産物を拾ってっくてなものです。

 ゲーム内で使用するイラストは後々自作するとして、とりあえずはプログラム作ってみようって段階です。みかんは「素材屋小秋」っていうサイトから拝借しました。

http://www.sozaiyakoaki.com/win/mikan/

 

さて、みかんがミックンにあたったら得点が入るよ~ってなプログラムをつくったわけですが、なぜか上手くいかない。

ちなみにスクリプトはこんな感じ

>||

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

}

||<

参考書とかサイトぐりぐり~とみて

あ、コライダーもRigidbodyもなんもつけてねぇ

てな初歩的なミスに気づき、Collider2DとRigidbody2Dを追加。どちらもあたり判定には必須ですね。詳しくは下記参照。

Unity - マニュアル: リジッドボディ 2D

当たり判定とアニメーションイベントとレイヤー

 

さて、これでもう大丈夫…

と思いきや全然スコアが加算されぬぞ。なんで?どこがおかしい??

まとも参考書やサイトをぐるぐるまわり、ときにはチュートリアルを1からしてみたりしながら二日ほど。本気でつんだなと思ってた。

そしてなんとな~く

IsTriggerのチェックを外してみたらうまくいった

f:id:sayone128:20150617195630j:plain

んんん?でもまって、トリガーって当たり判定では必須なんでねぇの?

衝突してもそのまま通過するように設定するのがトリガーなんでねえの??

 

でもトリガーのチェックを外すと当たり判定はうまく言ってる模様。

ちゃんとみかんも消えました。

 

????????

 

原因は謎なんだがとりあえずプログラムは動いたので今日は帰ろうと思います…