Помогите со скриптом перехода на новую сцену
|
|
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 компоненты написано здесь, в самом низу.
|
|
| |