この記事は、【完走したい】楽しくいろいろやる Advent Calendar 2023の25日目です。
Unity キャラに当たり判定を付ける
OnCollisionEnterを使おうとしたのですが、動かなかったのでいろいろ見直していきます。
書く
特定のオブジェクトが衝突したらGameOverが表示されるようにしました。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Col : MonoBehaviour
{
public GameObject Player;
public GameObject Hantei;
// Start is called before the first frame update
void Start()
{
Hantei.SetActive(false);
}
// Update is called once per frame
void OnCollisionEnter(Collision collision)
{
if (collision.gameObject==Player)
{
Hantei.SetActive(true);
}
}
}
Hanteiが、GameOverと書かれたTextです。
Playerと衝突したら、GameOverと表示されます。
ここに問題はありませんでした。
rigidbody
衝突する方かされる方、あるいはその両方に必要です。
ないと、衝突が検知されません。
ここも問題ありませんでした。
Collider
Box ColliderだろうがMesh Colliderだろうが関係ありません。
Colliderとついている者同士が衝突して判定ができます。
今回はどちらのオブジェクトにもCapsule Colliderを入れています。
どちらのオブジェクトにも入れないと反応しません。
ここも問題ありませんでした。
Is Trigger
こいつが原因でした。
これが片方でもチェックが入っているとうまく動きません。
動く方にチェックがついていたので消しました。
どうなったか
こうなりました
もう完成でいいと思います。 ちゃんと動いてくれて感動しました。25日間を振り返って
今年は、UnityやAndroidstudio,VSCodeでjava,kotlin,pythonなど様々な言語にチャレンジしました。
いろいろな言語を使ってみて、自分はpythonとC#が一番合っているんじゃないかと思いました。
もしどの言語にするか悩んでいる人は、いろいろな言語にチャレンジしてから決めたほうがいいと思います。実際使ってみて、扱いやすい言語を探すほうが後から面倒くさくならないので。
できれば今年、もっといろんなことにチャレンジしたかった(例えば、Webアプリを作ってみたりなど)のですが、ちょっと時間が足りなかったのでもし来年できるようであれば頑張りたいと思います。
来年もよろしくお願いします。
【完走したい】楽しくいろいろやる Advent Calendar 2023 おわり
参考
https://www.sejuku.net/blog/58775