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

Помогите пожалуйста с Collider в Unity

Norm Chell Ученик (123), на голосовании 8 месяцев назад
У меня есть Collider Player. при входе в триггер Cash ему должны зачисляться 50 единиц валюты, а при входе в триггер Shelvings у него должны отбирать 10 единиц валюты. В итоге я получаю что мне дают за вход в любой из этих триггеров 40 единиц валюты (типо 50-10=40), как исправить этот баг? А если точнее, то как правильно написать код для этого?
Дополнительно: У каждого коллайдера и триггера стоит одноимённый тег
Голосование за лучший ответ
Александр С Знаток (368) 9 месяцев назад
Вам нужно написать скрипт для вашего объекта Player. Вот пример, как это можно сделать на C#:
using UnityEngine;

public class PlayerController : MonoBehaviour
{
private int currency = 0; // Переменная для хранения валюты

// Вызывается, когда объект входит в триггер
private void OnTriggerEnter(Collider other)
{
// Проверяем, является ли триггер Cash
if (other.CompareTag("Cash"))
{
currency += 50; // Добавляем 50 единиц валюты
Debug.Log("Получено 50 единиц валюты. Всего: " + currency);
}
// Проверяем, является ли триггер Shelvings
else if (other.CompareTag("Shelvings"))
{
currency -= 10; // Вычитаем 10 единиц валюты
Debug.Log("Потеряно 10 единиц валюты. Всего: " + currency);
}
}
}
Прежде всего, убедитесь, что ваш Player объект имеет Collider и Rigidbody, а у Collider'ов Cash и Shelvings стоит галочка "Is Trigger", чтобы они действовали как триггеры.

Этот скрипт реагирует на события входа объекта в триггер. Он проверяет тег триггера, с которым взаимодействует Player. Если тег соответствует "Cash", к валюте Player добавляется 50 единиц и выводится отладочное сообщение. Если тег соответствует "Shelvings", от валюты Player отнимается 10 единиц, также с выводом отладочного сообщения.
Похожие вопросы