質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

1回答

890閲覧

UnityのSimple Corridorsというアセットについて。

10Windows

総合スコア13

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2019/04/05 18:07

Unity 2017.4.24f1にて起きました。
Simple Corridorsというアセットを使って、建物を作り、いざテストプレイ!!としたところ、
プレイヤーが近づいても、どんなボタンを押しても開きませんでした。
該当オブジェクトは、Simple Corridors>Prefabs>WallWithDoor です。
Door.csというスクリプトに問題があるようなのですが、
まったくわからず、こちらでは対処の使用がありませんでした。
スクリーンショットと該当スクリプト全文を載せておきます。
丸投げしてしまうような質問ですいません。

スクリプト 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Door : MonoBehaviour {

private Animator animator; private Canvas interactionUI; bool OpenTrigger = false; bool PlayerInCollider = false; // Use this for initialization void Start () { //animator = GetComponent<Animator> (); animator = transform.Find ("Door_01").GetComponent<Animator> (); interactionUI = GameObject.Find ("InteractionUI").GetComponent<Canvas> (); if (interactionUI != null) { interactionUI.rootCanvas.enabled = false; } } void OnTriggerEnter (Collider other) { if (other.tag == "Player") { if (interactionUI != null) { interactionUI.rootCanvas.enabled = true; } PlayerInCollider = true; } } void OnTriggerExit (Collider other) { if (other.tag == "Player") { if (interactionUI != null) { interactionUI.rootCanvas.enabled = false; } PlayerInCollider = false; } } void OpenDoor() { if (animator != null) { animator.SetBool ("IsOpen", !animator.GetBool("IsOpen")); } } // Update is called once per frame void Update() { if (OpenTrigger) { OpenDoor(); OpenTrigger = false; } if(interactionUI.isActiveAndEnabled) { if (Input.GetKeyDown (KeyCode.E)) { if (PlayerInCollider) { OpenTrigger = true; } } } }

}

スクショ

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

InteractionUIという名前のGameObjectが存在しない、またはそのGameObjectがCanvasを持っていないということではないかと思います。

投稿2019/04/06 01:13

vo3

総合スコア321

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

10Windows

2019/04/08 10:25

ご回答ありがとうございます。 返事が遅くなってしまい申し訳ありません。 試してみましたが無理でした。
vo3

2019/04/08 12:28

非力なPCなのでしっかりとはやってませんが、こちらでは問題なくドアが開いています。 まず、プレイヤーを操作してドアの近くに持ってきた時に[Press "E" to interact]といったメッセージが出るのですが、それが出ていますか? このメッセージを出しているのが InteractionUI というGameObjectです。 提示されたSSのConsoleに大量に出ているエラーはこれが見つからないといったものです。 このエラーが解消されているのが大前提です。 そのうえで出ていないのであれば、ドアがプレイヤーのコリジョンを検出できていないです。 その場合、プレイヤーのタグが[Player]になっていない or プレイヤーにColliderとRigidbodyが割り付けられていない が考えられます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問