Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

C# Unity.Надо сделать скрипт чтобы когда игрок сталкивался с платформой(шипами)высвечивалась панель с текстом и кнопкой.

Фёдор Ходченков Ученик (116), на голосовании 3 недели назад
Кнопка отвечает за рестарт уровня.Скрипт для кнопки я сделал.А вот скрипт для панели которая будет появляться,нет.Не могу понять как его сделать.Кто может,пожалуйста помогите!
Голосование за лучший ответ
Волк Чёрный Ученик (158) 1 месяц назад
Вот пример скрипта на C# для панели с текстом и кнопкой, которая появляется при столкновении с платформой:

using UnityEngine;
using UnityEngine.UI;

public class PlatformCollisionScript : MonoBehaviour
{
public GameObject panel; // Объект панели, который будет появляться
public Text text; // Текст, который будет отображаться на панели
public Button restartButton; // Кнопка для рестарта уровня

private bool platformCollision; // Логическая переменная для отслеживания столкновения с платформой

void OnCollisionEnter(Collision other)
{
platformCollision = true;
panel.SetActive(true); // Активируем панель
text.text = "Столкновение с платформой"; // Устанавливаем текст на панели
restartButton.onClick.AddListener(RestartLevel); // Добавляем обработчик клика на кнопку рестарта
}

void RestartLevel()
{
// Здесь можно реализовать логику рестарта уровня, например, уничтожить текущий GameObject и создать новый
}

void OnCollisionExit(Collision other)
{
platformCollision = false;
panel.SetActive(false); // Скрываем панель
restartButton.onClick.RemoveAllListeners(); // Удаляем обработчик клика на кнопку
}
}

Этот скрипт прикрепляется к объекту, который будет сталкиваться с платформой. При столкновении активируется панель с текстом и кнопкой. При выходе из столкновения панель скрывается, а обработчик клика на кнопке удаляется.

Обратите внимание, что в примере предполагается наличие GameObject для панели, Text для текста и Button для кнопки. Также необходимо настроить логику рестарта уровня в методе RestartLevel.
Фёдор ХодченковУченик (116) 1 месяц назад
это с chat-gpt?Скрипт не работает.
Волк Чёрный Ученик (158) Фёдор Ходченков, доведи его до ума
Волк ЧёрныйУченик (158) 1 месяц назад
что ошибка пишет?
MvC Просветленный (36565) 1 месяц назад
возьми готовый шаблон- там уже все это +- есть (там только все под себя поменять нужно + добавлять новые механники-твой)
Фёдор ХодченковУченик (116) 1 месяц назад
А где найти этот шаблон?
MvC Просветленный (36565) Фёдор Ходченков, да подобных готовых шаблонов куча! (там меняешь модельки на сво и всее)
MvCПросветленный (36565) 1 месяц назад
вот пример! ( https://assetstore.unity.com/packages/templates/systems/platformer-project-206584)-данный ассет сможешь найти в интернете (бесплатно!)
Фёдор ХодченковУченик (116) 1 месяц назад
Не могу найти,я пробовал писать несколько скриптов,по идеи они должны работать,но не работают.В консоли ошибок не пишет.Возможно я не правильно что-то настроил в игроке или в шипах
MvC Просветленный (36565) Фёдор Ходченков, скрипты на обьекты прикрепи! (иначе они и выполнятся не будут-в этом случае ничего не будет работать + не будет ошибок-мби это твой случай!) ТСТ-если это игрок и ты ему написал -скрипт ходьбы-этот скрипт на игрока закинь!
Фёдор ХодченковУченик (116) 1 месяц назад
Я закинул,но не один скрипт не работал,задавал вопросы"что не так с моим скриптом?" все отвечали что скрипт рабочий.
Фёдор ХодченковУченик (116) 1 месяц назад
Точнее не работают скрипты про панель
MvC Просветленный (36565) Фёдор Ходченков, о какой панели речь ?? Чтоб все работало ты закинь этот скрипт на самого игрока!-иначе скрипт просто не используется-по сути и плеер не будет ходить и тд + в панеле ошибок их не будет (обо он и не используется) + НУжно запустить сцену-дабы увидеть (красные ошибки если они есть!+скрипты должны висеть где нужно!)
Рустам Абдрашитов Мыслитель (9494) 1 месяц назад
 using UnityEngine; 
using UnityEngine.UI;
using UnityEngine.SceneManagement;

public class SpikeCollision : MonoBehaviour
{
[Header("UI Elements")]
[SerializeField] private GameObject panel;
[SerializeField] private Button restartButton;

private void Awake()
{
if (panel == null)
{
Debug.LogError("Panel is not assigned in the inspector.");
}

if (restartButton == null)
{
Debug.LogError("Restart button is not assigned in the inspector.");
}
}

private void Start()
{
panel.SetActive(false);
restartButton.onClick.AddListener(RestartLevel);
}

private void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
{
ShowPanel();
}
}

private void ShowPanel()
{
panel.SetActive(true);
Time.timeScale = 0;
}

private void RestartLevel()
{
Time.timeScale = 1;
SceneManager.LoadScene(SceneManager.GetActiveScene().name);
}

private void OnDisable()
{
restartButton.onClick.RemoveListener(RestartLevel);
}
}
Фёдор ХодченковУченик (116) 1 месяц назад
не работает
Похожие вопросы