質問編集履歴

1 ソースコード変更いたしました。

y_unity

y_unity score 39

2017/10/24 10:47  投稿

Unity_既存のプロラグムの変更について(衝突判定からマウス操作へ)
uniry5.6を使用しております。
現在下記のプロラグムを実装しております。
--------------------------------------------------------------------------
using UnityEngine;
using System.Collections;
using UnityEngine.SceneManagement;// ←new!
//---------------------------------------------------
//===================================================
public class scene3 : MonoBehaviour {
   private readonly string NEXT_SCENE_NAME = "3";
   // AudioSourceはInspectorでセット.
   // かつAudioClipもInspectorでAudioSourceにアタッチ済みであること前提.
   [SerializeField] private AudioSource audio = null;
   [SerializeField ] private AudioClip clip = null;
   //---------------------------------------------------
   void OnTriggerEnter(                  //変更したい部分
       Collider other){                //変更したい部分
       StartCoroutine( "changeScene" );       //変更したい部分
       // 接触対象はPlayerタグですか?         //変更したい部分
       }
   //---------------------------------------------------
   // コルーチンで次のシーンへ遷移.
   private IEnumerator changeScene(){
       this.audio.PlayOneShot( this.clip );
       //this.audio.PlayOneShot( this.audio.clip );
       while ( this.audio.isPlaying ){
           yield return new WaitForSeconds( 1.0f );
       }
       SceneManager.LoadScene( this.NEXT_SCENE_NAME );
       yield return null;
   }
}
-----------------------------------------------------------
こちらの"OnTrrigerEnter"(衝突判定)からマウス操作クリック(ray)で
変更しようと考えています。
下記にrayのスクリプトを書いたのですが、エラーが起こってしまいます。
----------------------------------------------------------------------
if (Input.GetMouseButtonDown(0)){
           Vector3 pos = Input.mousePosition;
           Ray ray = Camera.main.ScreenPointToRay(pos);
           RaycastHit hit;
           if (Physics.Raycast(ray, out hit, 100f)){
               obj = hit.collider.gameObject;
               SceneManager.LoadScene("1");
--------------------------------------------------------------------
どなたかご教授いただけますと大変助かります。
ご確認の程よろしくお願い致します。
ご確認の程よろしくお願い致します。
※補足
2つのコードをつなぎ合わせたものです。
エラーはなく、クリックしても音声もならず、シーン遷移も行いません。
ご確認の程よろしくお願い致します。
------------------------------------------------------
'''
//シーン切り替え
using UnityEngine;
using System.Collections;
using UnityEngine.SceneManagement;// ←new!
//---------------------------------------------------
//===================================================
public class test : MonoBehaviour {
   GameObject obj;
   int counter = 0;
   private readonly string NEXT_SCENE_NAME = "1";
   // AudioSourceはInspectorでセット.
   // かつAudioClipもInspectorでAudioSourceにアタッチ済みであること前提.
   [SerializeField] private AudioSource audio = null;
   [SerializeField ] private AudioClip clip = null;
   //---------------------------------------------------
   void Update () {
       if (Input.GetMouseButtonDown (0)) {
           Vector3 pos = Input.mousePosition;
           Ray ray = Camera.main.ScreenPointToRay (pos);
           RaycastHit hit;
           if (Physics.Raycast (ray, out hit, 100f)) {
               obj = hit.collider.gameObject;
               counter = 100;
           }
       }
   }
   //---------------------------------------------------
   // コルーチンで次のシーンへ遷移.
   private IEnumerator changeScene(){
       this.audio.PlayOneShot( this.clip );
       //this.audio.PlayOneShot( this.audio.clip );
       while ( this.audio.isPlaying ){
           yield return new WaitForSeconds( 1.0f );
       }
       SceneManager.LoadScene( this.NEXT_SCENE_NAME );
       yield return null;
   }
}
'''
-------------------------------------------------------------------------
  • Unity

    11641 questions

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

  • Unity3D

    3781 questions

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

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