Страница 1 из 2

Проблема со сменой камер

СообщениеДобавлено: 24 мар 2017, 19:10
Kill4F1
Есть небольшая проблема,которую к сожалению как решать я пока что не понял.
На сцене есть дефолтный FPSController с тэгом "Player",есть Canvas,Camera,триггер и скрипт на триггере.
При смене камер,Camera,которая должна видеть текст на Canvas'e не видит и курсор не появляется.
Отдельно же Camera видит текст и есть курсор.
Сам скрипт :
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class ChangeCameras : MonoBehaviour {
        public GameObject Camera1; //FPSController
        public GameObject Camera2; //Camera
        bool  enter;
        bool  stoptime = false;


        void  Update (){
                if(enter)
                if(Input.GetKey("e")  && stoptime == false )
                {
                        Camera1.SetActive (false);
                        Camera2.SetActive (true);
                        stoptime = true;
                        Time.timeScale = 0;
                }
        }
        void  OnTriggerEnter ( Collider other  ){
                if (other.gameObject.tag == "Player") {
                        enter = true;
                }
        }


        void  OnTriggerExit ( Collider other  ){
                if (other.gameObject.tag == "Player") {
                        enter = false;
                }
        }
}

Re: Проблема со сменой камер

СообщениеДобавлено: 24 мар 2017, 22:34
Rpabuj1
Kill4F1 писал(а):Есть небольшая проблема,которую к сожалению как решать я пока что не понял.
На сцене есть дефолтный FPSController с тэгом "Player",есть Canvas,Camera,триггер и скрипт на триггере.
При смене камер,Camera,которая должна видеть текст на Canvas'e не видит и курсор не появляется.
Отдельно же Camera видит текст и есть курсор.
Сам скрипт :
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class ChangeCameras : MonoBehaviour {
        public GameObject Camera1; //FPSController
        public GameObject Camera2; //Camera
        bool  enter;
        bool  stoptime = false;


        void  Update (){
                if(enter)
                if(Input.GetKey("e")  && stoptime == false )
                {
                        Camera1.SetActive (false);
                        Camera2.SetActive (true);
                        stoptime = true;
                        Time.timeScale = 0;
                }
        }
        void  OnTriggerEnter ( Collider other  ){
                if (other.gameObject.tag == "Player") {
                        enter = true;
                }
        }


        void  OnTriggerExit ( Collider other  ){
                if (other.gameObject.tag == "Player") {
                        enter = false;
                }
        }
}


А включены обе камеры? (Camera.enable )?

Re: Проблема со сменой камер

СообщениеДобавлено: 24 мар 2017, 22:50
Kill4F1
Одна камера включена,вторая отключена.

Re: Проблема со сменой камер

СообщениеДобавлено: 24 мар 2017, 23:00
Rpabuj1
Kill4F1 писал(а):Одна камера включена,вторая отключена.

Включите их обе, а потом активируете или деактивируете. Заметьте, я вкладываю в слова "включить" и "активировать" разный смысл.

Re: Проблема со сменой камер

СообщениеДобавлено: 25 мар 2017, 00:05
Kill4F1
Сделал,всё так же не видно текста на Canvas,курсор появился,но к сожалению при нажатии на любое пустое место или button он пропадает и вернуть можно только через "escape".

Re: Проблема со сменой камер

СообщениеДобавлено: 25 мар 2017, 11:22
Rpabuj1
Kill4F1 писал(а):Сделал,всё так же не видно текста на Canvas,курсор появился,но к сожалению при нажатии на любое пустое место или button он пропадает и вернуть можно только через "escape".

Хм... А скиньте скрин настроек всех камер и канваса?

Re: Проблема со сменой камер

СообщениеДобавлено: 25 мар 2017, 11:41
Kill4F1
FPSCamera : Изображение
Camera : Изображение
Canvas : Изображение

Re: Проблема со сменой камер

СообщениеДобавлено: 25 мар 2017, 13:32
Kill4F1
Решил не менять камеры,а добавлять canvas в fpscontroller камеру,но проблема с курсором так и не пропала.
Возможно проблема в Lock Cursor у FPSContoller'a,но мой скрипт не может найти переменную "lockCursor" у скрипта "MouseLook"
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityStandardAssets.Characters;

public class InteractiveCanvas : MonoBehaviour {
        public Canvas Canvas;
        bool  enter;
        bool  stoptime = false;

        void  Update (){
                if(enter)
                if(Input.GetKey("e")  && stoptime == false )
                {
                        GameObject.Find("FPSController").GetComponent<MouseLook>().lockCursor = false;
                        Canvas.gameObject.SetActive (true);
                        stoptime = true;
                        Time.timeScale = 0;
                        Cursor.visible = true; 
                }
        }
        void  OnTriggerEnter ( Collider other  ){
                if (other.gameObject.tag == "Player") {
                        enter = true;
                }
        }


        void  OnTriggerExit ( Collider other  ){
                if (other.gameObject.tag == "Player") {
                        enter = false;
                }
        }
  }


Проблема в строчке :
Синтаксис:
Используется csharp
GameObject.Find("FPSController").GetComponent<MouseLook>().lockCursor = false;

Re: Проблема со сменой камер

СообщениеДобавлено: 25 мар 2017, 13:37
Rpabuj1
Kill4F1 писал(а):Решил не менять камеры,а добавлять canvas в fpscontroller камеру,но проблема с курсором так и не пропала.
Возможно проблема в Lock Cursor у FPSContoller'a,но мой скрипт не может найти переменную "lockCursor" у скрипта "MouseLook"
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityStandardAssets.Characters;

public class InteractiveCanvas : MonoBehaviour {
        public Canvas Canvas;
        bool  enter;
        bool  stoptime = false;

        void  Update (){
                if(enter)
                if(Input.GetKey("e")  && stoptime == false )
                {
                        GameObject.Find("FPSController").GetComponent<MouseLook>().lockCursor = false;
                        Canvas.gameObject.SetActive (true);
                        stoptime = true;
                        Time.timeScale = 0;
                        Cursor.visible = true; 
                }
        }
        void  OnTriggerEnter ( Collider other  ){
                if (other.gameObject.tag == "Player") {
                        enter = true;
                }
        }


        void  OnTriggerExit ( Collider other  ){
                if (other.gameObject.tag == "Player") {
                        enter = false;
                }
        }
  }


Проблема в строчке :
Синтаксис:
Используется csharp
GameObject.Find("FPSController").GetComponent<MouseLook>().lockCursor = false;


Может, лучше Screen.lockCursor?
Или я не совсем понял, чего вы хотите добиться?

Re: Проблема со сменой камер

СообщениеДобавлено: 25 мар 2017, 13:42
Kill4F1
В скрипте "MouseLook" есть переменная
Синтаксис:
Используется csharp
public bool  lockCursor = true

Мне нужно отключить эту переменную при нажатии "e" в триггере

Re: Проблема со сменой камер

СообщениеДобавлено: 25 мар 2017, 13:51
Rpabuj1
Kill4F1 писал(а):В скрипте "MouseLook" есть переменная
Синтаксис:
Используется csharp
public bool  lockCursor = true

Мне нужно отключить эту переменную при нажатии "e" в триггере

Перед Find'ом должна быть ссылка типа
public GameObject myobj;

А потом

myobj = GameObject.Find...

Re: Проблема со сменой камер

СообщениеДобавлено: 25 мар 2017, 14:03
samana
Rpabuj1 писал(а):Перед Find'ом должна быть ссылка типа

Это заблуждение.

Re: Проблема со сменой камер

СообщениеДобавлено: 25 мар 2017, 14:05
Kill4F1
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityStandardAssets.Characters;

public class InteractiveCanvas : MonoBehaviour {
        public Canvas Canvas;
        public GameObject Controller;
        bool  enter;
        bool  stoptime = false;

        void  Update (){
                if(enter)
                if(Input.GetKey("e")  && stoptime == false )
                {
                        Controller = GameObject.Find("FPSController").GetComponent<MouseLook>().lockCursor = false;
                        Canvas.gameObject.SetActive (true);
                        stoptime = true;
                        Time.timeScale = 0;
                        Cursor.visible = true; 
                }
        }
        void  OnTriggerEnter ( Collider other  ){
                if (other.gameObject.tag == "Player") {
                        enter = true;
                }
        }


        void  OnTriggerExit ( Collider other  ){
                if (other.gameObject.tag == "Player") {
                        enter = false;
                }
        }
  }


Проблема состоит в том,что в строчке
Синтаксис:
Используется csharp
Controller = GameObject.Find("FPSController").GetComponent<MouseLook>().lockCursor = false;

MouseLook красный,т.к. не может увидеть скрипт в FpsContoller'e
Ну и сама ошибка :
Изображение

Re: Проблема со сменой камер

СообщениеДобавлено: 25 мар 2017, 14:21
samana
Kill4F1 писал(а):MouseLook красный,т.к. не может увидеть скрипт в FpsContoller'e


Синтаксис:
Используется csharp
using UnityStandardAssets.Characters.FirstPerson;

Re: Проблема со сменой камер

СообщениеДобавлено: 25 мар 2017, 14:41
Rpabuj1
samana писал(а):
Rpabuj1 писал(а):Перед Find'ом должна быть ссылка типа

Это заблуждение.

Не знал, спасибо.
Прошу прощения у автора темы за этот совет.