Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/29: Рейтинг темы: голосов - 29, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 29.10.2018
Сообщений: 4

Код для проверки переменной скрипта другого объекта через коллайдер

29.10.2018, 08:11. Показов 6114. Ответов 7
Метки c# (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, впервые на вашем форуме, что да как не знаю, надеюсь сделал все правильно.
Такая проблема: Пытаюсь написать игру, и мне нужно чтобы объект удалялся если выполняется условие. Условием нужно сделать совпадение определенной переменной в скриптах всех других объектов, чей коллайдер пересекается с данным, а именно чтобы эта переменная равнялась определенному числу, но как это сделать не совсем понимаю. На данный момент код выглядит так:

C#
1
2
3
4
5
6
7
8
9
10
11
12
    private void Update()
    {
        stother = GameObject.Find("Cube2").GetComponent<SfC>().st;
        if (st == 1)
            GetComponent<Renderer>().material.color = Color.green;
        if (st == 2)
            GetComponent<Renderer>().material.color = Color.black;
        if (st == 3)
            GetComponent<Renderer>().material.color = Color.yellow;
        if (st == 2 && stother == 2)
            Destroy(gameObject);
        }
Проблема еще в том, что нужно чтобы он проверял именно все коллайдеры, а не заданные.

Добавлено через 32 минуты
Либо подскажите иной способ, который даст добиться этого не через коллайдер.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.10.2018, 08:11
Ответы с готовыми решениями:

Использование переменной из другого скрипта
есть 2 скрипта, в первом содержится переменная hp, нужно сделать чтобы во втором переменная death была равно переменной hp, чтобы при...

Изменение переменной другого скрипта
Только начинаю осваивать Unity, знаю что тема поднималась неоднократно, но до меня так и не дошло как изменить переменную одного скрипта из...

Как обратиться к переменной из другого скрипта?
public class heroScript : MonoBehaviour { public int score = 20; } Обращаюсь: public int score; private heroScript...

7
296 / 259 / 107
Регистрация: 26.10.2012
Сообщений: 809
31.10.2018, 08:53
См OnCollisionEnter, OnCollisionExit.
Эти методы вызываются при попадании физического тела в коллайдер текущего объекта и при выходе из коллайдера.
1
0 / 0 / 0
Регистрация: 29.10.2018
Сообщений: 4
31.10.2018, 14:14  [ТС]
Допустим, но это не решает моей проблемы, мне нужно чтобы он находил переменные в скрипте объектов, находящихся в его коллайдере, и не только тех, что заданны, а проверял у всех. И нужно чтобы это работало с любым количеством объектов.
В моем случае вообще так:
У меня есть ряд из 3 кубов, и когда игрок заходит в коллайдер одного из кубов, значение одной из переменных в скрипте этого куба меняется, и мне нужно, чтобы когда переменная всех трех кубов будет равна определенному значению, чтобы они удалились, при этом на них висит один и тот же скрипт. Да, в код можно задать 3 разных имени кубов, но что если нужно 5 кубов? Или 10? а может и все 20? Пробовал ввести объект по тегу и по названию(назвав все кубы одним именем), типа мол "Вдруг будет все сравнивать", но такого не вышло, он берет первый объект из списка объектов с таким тегом ("именем"), и поэтому если изменить значение этого первого объекта, он, и только он, удалится.
0
 Аватар для 1max1
3362 / 1775 / 1028
Регистрация: 26.10.2018
Сообщений: 5,204
31.10.2018, 15:01
Должен быть один контролирующий скрипт с массивом кубов, который будет чекать на совпадение чисел, делаешься это просто - под пустышку на сцене кидаем все свои кубы, массив получаем простым пробегом по детишкам в foreach.
C#
1
2
3
4
foreach (Transform child in parent)
{
    // Тут сравниваем и что-то делаем
}
Меняем переменную при заходе в коллайдер к примеру так:
C#
1
2
3
4
void OnCollisionEnter(Collision collision)
{
    collision.gameObject.GetComponent<Script>().variable = 1;
}
1
0 / 0 / 0
Регистрация: 29.10.2018
Сообщений: 4
31.10.2018, 15:22  [ТС]
А как примерно сравнивать? Какими командами? Просто я новичок, и про это еще мало знаю.
0
 Аватар для 1max1
3362 / 1775 / 1028
Регистрация: 26.10.2018
Сообщений: 5,204
31.10.2018, 15:45
Оператор == подойдет?))
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
bool EqualsVariable(Transform parent)
{
    int variable = parent.GetChild(0).GetComponent<Script>().variable;
 
    foreach (Transform child in parent)
    {
        if (child.GetComponent<Script>().variable != variable)
        {
            return false;
        }
    }
 
    return true;
}
1
0 / 0 / 0
Регистрация: 29.10.2018
Сообщений: 4
31.10.2018, 17:04  [ТС]
Родителем поставил платформу, Код ей вписал, внес поправки на Скрипт и переменную, но не срабатывает, в чем может быть проблема? Переменная публичная.
У детей, кубов, поставил проверку переменной родителя, но переменная родителя не меняется, из-за чего не идет процесс уничтожения кубов.
Миниатюры
Код для проверки переменной скрипта другого объекта через коллайдер  
Изображения
 
0
 Аватар для 1max1
3362 / 1775 / 1028
Регистрация: 26.10.2018
Сообщений: 5,204
31.10.2018, 17:09
Могу только гадать на кофейной гуще, тут нужно на сам проект глянуть.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.10.2018, 17:09
Помогаю со студенческими работами здесь

Запуск скрипта для анализа папки и запуска другого скрипта
Мне нужно написать скрипт, который каждую секунду (или 5 сек) сканировал определенную папку на поиск определенного файла. Например...

Обращение к переменной из другого объекта
private GameObject adfasf; adfasf = GameObject.Find(&quot;MedBox1&quot;); Item NewVarTest = adfasf.GetComponents&lt;Item&gt;(); Почему не...

Узнать, является ли объект переменной другого объекта
Здравствуйте! На самом деле вопрос посложнее: Предположим, есть объект &quot;MyObject&quot; типа &quot;TMyClass&quot;. Он включает в себя...

Удочерение объекта при попадании в Коллайдер
Моя задумка:- Если коллайдер одного объекта соприкасается с коллайдером другого ( Под тегом Item) ,то Item удочеряется в тот самый...

Можно ли вызвать метод одного объекта через метод другого объекта?
Мне нужно сделать так, чтобы при вызове метода OnMouseDown() Первого объекта вызывался метод IEnumerator Inst() Второго объекта. Как это...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru