Пятница, 22 Ноября 2024, 11:43

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Помогите со скриптом перехода на новую сцену
webDstudiaДата: Вторник, 17 Октября 2017, 14:27 | Сообщение # 1
был не раз
Сейчас нет на сайте
Приветствую, в данной сфере абсолютный ноль. Игру готовлю как забавный подарок человеку на ДР. На данный момент завис на одном моменте - переход к другой сцене/уровню. Сделать это хочу триггером, который срабатывает при касании к предмету, выдает текст в стиле "Нажми кнопку получишь результат". После нажатия кнопки загрузка новой сцены.

Вот пример скрипта:

Код
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class _switch : MonoBehaviour {

    public bool isReady = false;
    public float level=0;
    public bool drawText = false;
    
    function OnTriggerEnter(Collider other)
    {
  if(col.tag == "Player")
  {
   isReady = true;
   drawText = true;
  }
    }

    function OnTriggerExit(Collider other)
    {
  if(col.tag == "Player")
  {
   isReady = false;
   drawText = false;
  }
    }

    function Update()
    {
  if(Input.GetKeyDown(KeyCode.F) && isReady) SceneManager.LoadLevel(scene_1);
    }

    function OnGUI()
    {
  if(drawText) GUI.Label(new Rect(10, 10, 100, 25), "Press F to get"); //хз как правильно на java, написал на C#
    }
}


Выдает следующую ошибку

Код
Assets/_script/_switch.cs(8,1): error CS1525: Unexpected symbol `public'

Код
Assets/_script/_switch.cs(21,2): error CS0246: The type or namespace name `function' could not be found. Are you missing an assembly reference?

Код
Assets/_script/_switch.cs(30,2): error CS0246: The type or namespace name `function' could not be found. Are you missing an assembly reference?

Код
Assets/_script/_switch.cs(35,2): error CS0246: The type or namespace name `function' could not be found. Are you missing an assembly reference?


Уважаемые игроделы буду признателен за любую помощь!


Сообщение отредактировал webDstudia - Вторник, 17 Октября 2017, 14:38
litovetsДата: Вторник, 17 Октября 2017, 16:35 | Сообщение # 2
был не раз
Сейчас нет на сайте
Привет. В C# функции не так пишутся.
Код

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

public class _switch : MonoBehaviour {

    public bool isReady = false;
    public float level=0;
    public bool drawText = false;
    
    void OnTriggerEnter(Collider other)
    {
  if(col.tag == "Player")
  {
   isReady = true;
   drawText = true;
  }
    }

    void OnTriggerExit(Collider other)
    {
  if(col.tag == "Player")
  {
   isReady = false;
   drawText = false;
  }
    }

    void Update()
    {
  if(Input.GetKeyDown(KeyCode.F) && isReady) SceneManager.LoadLevel(scene_1);
    }

    void OnGUI()
    {
  if(drawText) GUI.Label(new Rect(10, 10, 100, 25), "Press F to get"); //хз как правильно на java, написал на C#
    }
}
webDstudiaДата: Вторник, 17 Октября 2017, 20:17 | Сообщение # 3
был не раз
Сейчас нет на сайте
Я поправил, но теперь он жалуется на это...

Код
Assets/_script/_switch.cs(23,6): error CS0103: The name `col' does not exist in the current context


Это строка отвечает за тэг объекта, верно? Что тут-то не так :(
drcrackДата: Вторник, 17 Октября 2017, 20:21 | Сообщение # 4
старожил
Сейчас нет на сайте
пиши other.gameObject.tag вместо col.tag
webDstudiaДата: Вторник, 17 Октября 2017, 21:07 | Сообщение # 5
был не раз
Сейчас нет на сайте
Спасибо, теперь скрипт компилируется без ошибок, но он не работает... Мои действия:

1. Создаю спрайт, помещаю туда PNG-файл.
2. Вешаю на него BoxCollider с пометкой IsTrigger.
3. Ставлю Rigidbody2D с фиксацией по оси Y, чтобы он не "улетал" вниз.
4. Запускаю игру, подхожу к "сундуку" и... ничего :(

Т.е. триггер "не понимает", что IsReady = true. Адаптировал я скрипт исходя из того, что объект с тегом "Player" доходит до данного спрайта, ему высвечивается надпись, он жмет "F" и улетает на новую сцену. А получается, что спрайт с этим скриптом "не видит" персонажа.

UPDATE: Есть подозрение, что дело в тэге самого спрайта, но эксперименты и чтение Google ничем не помогло :(


Сообщение отредактировал webDstudia - Вторник, 17 Октября 2017, 21:14
VostruginДата: Вторник, 17 Октября 2017, 21:51 | Сообщение # 6
постоянный участник
Сейчас нет на сайте
webDstudia, судя по всему у вас 2D проект? (Вы написали, что повесили Rigidbody2D).
Если да, то
OnTriggerEnter(Collider other) замените на OnTriggerEnter2D(Collider2D other)
OnTriggerExit(Collider other) замените на OnTriggerExit2D(Collider2D other)
И на объект добавляйте 2D коллайдеры, в Вашем случае BoxCollider заменить на BoxCollider2D.






Сообщение отредактировал Vostrugin - Вторник, 17 Октября 2017, 21:55
webDstudiaДата: Вторник, 17 Октября 2017, 22:46 | Сообщение # 7
был не раз
Сейчас нет на сайте
Спасибо всем, но Vostrugin особенно! Я не нигде не встречал, что 2D компоненты надо так указывать.
VostruginДата: Вторник, 17 Октября 2017, 22:57 | Сообщение # 8
постоянный участник
Сейчас нет на сайте
webDstudia, передавайте имениннику/имениннице поздравление с форума ;)
Про 2D компоненты написано здесь, в самом низу.




  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг