質問編集履歴

2 誤字

Abyss_in_Light

Abyss_in_Light score 17

2018/11/28 21:15  投稿

Unity 当たり判定が正しく機能しない
### 前提・実現したいこと
Prefabから動的に生成したオブジェクトとキャラクターが接触・衝突した際にシーン遷移を行いたい
### 発生している問題・エラーメッセージ
```
キャラクターに敵が衝突した際に、当たり判定(ここではOnControllerColliderHit)が全く機能しないため、シーン遷移ができない。
```
### 該当のソースコード
プレイヤー側には、このようなスクリプトをインポートしています。
```C#
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class GameOverSceneChanger : MonoBehaviour
{
   // Use this for initialization
   void OnControllerColliderHit(ControllerColliderHit other)
   {
       if (other.gameObject.CompareTag("Enemy(Clone)"))
       {
           SceneManager.LoadScene("GameOver");
       }
   }
}
```
 
### 試したこと
・Prefabから生成されるオブジェクトはオブジェクト名最後尾に(Clone)がつくため、このせいで動かないのではと推測し、Enemyを一定時間ごとに生成するスクリプトの中に毎回Update()内でリネームするための処理を入れてみました。
→リネームがうまくいかず断念
・最初はEnemy側でもCharactor Controllerを用いて動かしていましたが、Enemy側にCharatorControllerではなく、Rigidbody + CapsuleCollider を実装し、当たり判定を取ろうとしました。
→どちらでもうまくいかない
・上記のスクリプトをPrefab内のEnemyに適応してみました。
→これもうまくいきませんでした
実装力が未熟で非常に申し訳ないです。しかし、これ以上どうすれば正しく動作するのか、今の私にはどう考えてもわかりませんでした。
ぶしつけではありますが、もしよろしければ何かアドバイスをいただきたいです。
最後に、プレイヤーと敵のプロパティ、並びに実行した際のプレイヤーと敵が衝突している際のスクリーンショットを添付します。
回答お待ちしています。
![プレイヤーのプロパティ](ef417bb69025e02a9fac6a16255d19e8.png)![![敵のプロパティ](1802f153b28e82b4038a419700a3a1b4.png)](9c8fe914dd80d5db20939fdc02b05984.png)![白:プレイヤー、黒:敵](844de8523e2b2a99491553e2e8054455.png)
![プレイヤーのプロパティ](ef417bb69025e02a9fac6a16255d19e8.png)
![敵のプロパティ](1802f153b28e82b4038a419700a3a1b4.png)
![白:プレイヤー、黒:敵](844de8523e2b2a99491553e2e8054455.png)
  • Unity

    11288 questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

  • Unity3D

    3695 questions

    Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

1 アイコンとタグの追加

Abyss_in_Light

Abyss_in_Light score 17

2018/11/28 19:36  投稿

Unity 当たり判定が正しく機能しない
### 前提・実現したいこと
Prefabから動的に生成したオブジェクトとキャラクターが接触・衝突した際にシーン遷移を行いたい
### 発生している問題・エラーメッセージ
```
キャラクターに敵が衝突した際に、当たり判定(ここではOnControllerColliderHit)が全く機能しないため、シーン遷移ができない。
```
### 該当のソースコード
プレイヤー側には、このようなスクリプトをインポートしています。
```C#
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class GameOverSceneChanger : MonoBehaviour
{
// Use this for initialization
void OnControllerColliderHit(ControllerColliderHit other)
{
if (other.gameObject.CompareTag("Enemy(Clone)"))
{
SceneManager.LoadScene("GameOver");
}
}
}
```
### 試したこと
・Prefabから生成されるオブジェクトはオブジェクト名最後尾に(Clone)がつくため、このせいで動かないのではと推測し、Enemyを一定時間ごとに生成するスクリプトの中に毎回Update()内でリネームするための処理を入れてみました。
→リネームがうまくいかず断念
・最初はEnemy側でもCharactor Controllerを用いて動かしていましたが、Enemy側にCharatorControllerではなく、Rigidbody + CapsuleCollider を実装し、当たり判定を取ろうとしました。
→どちらでもうまくいかない
・上記のスクリプトをPrefab内のEnemyに適応してみました。
→これもうまくいきませんでした
実装力が未熟で非常に申し訳ないです。しかし、これ以上どうすれば正しく動作するのか、今の私にはどう考えてもわかりませんでした。
ぶしつけではありますが、もしよろしければ何かアドバイスをいただきたいです。
最後に、プレイヤーと敵のプロパティ、並びに実行した際のプレイヤーと敵が衝突している際のスクリーンショットを添付します。
回答お待ちしています。
![プレイヤーのプロパティ](ef417bb69025e02a9fac6a16255d19e8.png)![![敵のプロパティ](1802f153b28e82b4038a419700a3a1b4.png)](9c8fe914dd80d5db20939fdc02b05984.png)![白:プレイヤー、黒:敵](844de8523e2b2a99491553e2e8054455.png)
  • Unity3D

    3695 questions

    Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

  • Unity

    11288 questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る