ここから本文です

UnityのC#で自機が打った弾と敵が打った弾がぶつかったときに敵が打った弾が消える...

hrk********さん

2017/11/3012:16:07

UnityのC#で自機が打った弾と敵が打った弾がぶつかったときに敵が打った弾が消えるプログラムを作ってます。しかしどう実行しても敵が打った弾が消えずに困ってます。

原因はOnTriggerEnter関数とvoid OnTriggerStay関数が呼ばれてないことが分かったのですがどうしたら解決したらいいのかを調べたところスペルミスやRigidbodyがつながっていないというのは分かったですがスペルミスはなくRigidbodyもつながっている状況です。なぜOnTriggerEnter関数とvoid OnTriggerStay関数は呼ばれないのかわかりません。
以下ソースです。
void OnTriggerEnter(Collider coll)
{
if (coll.gameObject.tag == "PlayerBullet" || coll.gameObject.tag == "Player_Ray")
{//プレイヤーの弾が当たった時の処理

//HPが0だったら破壊
if (Enemy_HP == 0)
{
//爆発エフェクトを生成
Instantiate(Explosion, new Vector3(transform.position.x, transform.position.y, transform.position.z), Quaternion.identity);
//オブジェクトを削除
Destroy(this.gameObject);
}
//HPを減らす
else
Enemy_HP--;
}
}
void OnTriggerStay(Collider coll)
{
if (coll.gameObject.tag == "PlayerBullet" || coll.gameObject.tag == "Player_Ray")
{
if(coll.gameObject.tag=="Enemy Missile")
{
Destroy(this.gameObject);
}
}
}

閲覧数:
158
回答数:
2
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

tot********さん

2017/11/3012:51:54

本当に呼ばれてませんか?
OnTriggerStayの↓はDestroyに到達できない条件になってますけど。

if (coll.gameObject.tag == "PlayerBullet" || coll.gameObject.tag == "Player_Ray")
{
if(coll.gameObject.tag=="Enemy Missile")
{

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

dea********さん

2017/11/3016:29:50

Rigidbodyをヒエラルキーで見て、「Is Trigger」にチェックが入っていますか?
(チェックオンでOnTrigger〜が呼ばれるようになります)

もしくは、オブジェクトのタグが正しく設定されていますか?


プログラムのある地点に到達しているか確認したい場合は
Debug.Log("test");
を入れると、デバッグログが表示されるようになります。

OnTriggerStay内なら
Debug.Log(coll.gameObject.tag);
とすると衝突したオブジェクトのタグが表示されます。
参考にしてください。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる