Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
 Аватар для ПСВ
39 / 32 / 8
Регистрация: 29.03.2020
Сообщений: 184

Деактивация объектов

28.08.2021, 23:06. Показов 1162. Ответов 5

Студворк — интернет-сервис помощи студентам
Привет!
Создаю пару объектов (карт) вот таким скриптом:
C#
1
2
3
4
5
6
7
8
9
10
public class serialize_Cards : MonoBehaviour
{
    public GameObject[] _cards;
    public GameObject[] _spawns;
    
    void Start()
    {
        Instantiate(_cards[0], _spawns[0].transform.position, Quaternion.Euler(-90, 0, 0));
        Instantiate(_cards[3], _spawns[3].transform.position, Quaternion.Euler(-90, 0, 0));
    }
Далее делаю возможность поднимать/опускать карты таким скриптом:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
public class UpDownScript : MonoBehaviour
{
    private Rigidbody currentObj;
    private bool Up;
 
    void Start()
    {
        currentObj = GetComponent<Rigidbody>();
    }
    void Update()
    {
        //останавливаем карту вверху
        if (currentObj.transform.position.y >= 0.05f)
        {
            currentObj.GetComponent<Rigidbody>().velocity = Vector3.zero;
        }
    }
    void OnMouseOver()
    {
        if (Input.GetMouseButtonUp(0) && !Up)
        {
            card_Up();
        }
        else if (Input.GetMouseButtonUp(0) && Up)
        {
            card_Down();
        }
    }
    void card_Up()
    {
        currentObj.useGravity = false;
        GetComponent<Rigidbody>().AddForce(new Vector3(0f, 50f, 0f));
        Up = true;
    }
    void card_Down()
    {
        currentObj.useGravity = true;
        Up = false;
    }
}
Задача состоит в том, чтобы при клике по одной карте все другие падали. Подскажите, пожалста, как это можно реализовать

Добавлено через 6 минут
Не правильно сказал.
Чтоб последняя поднятая падала при клике на другую карту
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.08.2021, 23:06
Ответы с готовыми решениями:

Деактивация кнопки через скрипт
Добрый день. Столкнулся с проблемой при создании приложения в Unity: создаю сетку кнопок 6 на 6, прицепляю к ним всякие разные параметры....

В общем как заменить в подборе объектов и так чтобы не сохранял в массив объектов а в лист? с#
Вот код.public static RaycastHit rch; int _my_podbor_switch; public GameObject All_max_go_Bullet = new GameObject; public...

Деактивация сесии
Доброго время суток! вот такая задача предстоит передо мною нужно дезактивировать сесию при закритии браузера или закладки браузера но при...

5
0 / 0 / 0
Регистрация: 28.08.2021
Сообщений: 3
28.08.2021, 23:08
ПСВ, привет, подскажи пожалуйста, как мне создать тему на форуме?
0
 Аватар для ПСВ
39 / 32 / 8
Регистрация: 29.03.2020
Сообщений: 184
28.08.2021, 23:32  [ТС]
Вниз списка с темами проматай и там ищи кнопку "Создать тему"
0
 Аватар для ПСВ
39 / 32 / 8
Регистрация: 29.03.2020
Сообщений: 184
29.08.2021, 16:57  [ТС]
Парни, подскажите, пожалуйста. Я знаю, что это не сложно и я знаю, что вы знаете. С меня лайк и подписка! )
0
 Аватар для samana
2639 / 1567 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
29.08.2021, 18:36
ПСВ, Если не вдаваться в подробности вашей реализации, то вам нужно просто хранить ссылку на последнюю карту, которую поднимали, чтобы потом была возможность опустить её.

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

Немного подправил ваш код (но он не стал лучше).
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
using UnityEngine;
 
public class UpDownScript : MonoBehaviour
{
    private Rigidbody _rb;
    private bool _isUp;
 
    // здесь храним ссылку на карту, которую поднимали последнюю
    private static UpDownScript _lastSelectedCard;
 
    private void Start()
    {
        _rb = GetComponent<Rigidbody>();
    }
    private void Update()
    {
        //останавливаем карту вверху
        if (_rb.transform.position.y >= 0.05f)
        {
            _rb.velocity = Vector3.zero;
        }
    }
    private void OnMouseOver()
    {
        if (Input.GetMouseButtonUp(0) && !_isUp)
        {
            // опускаем предыдущую поднятую карту, если она была
            _lastSelectedCard?.Card_Down();
 
            Card_Up();
 
            // устанавливаем текущую карту, как - последнюю, которую подняли
            _lastSelectedCard = this;
        }
        else if (Input.GetMouseButtonUp(0) && _isUp)
        {
            Card_Down();
        }
    }
    public void Card_Up()
    {
        _rb.useGravity = false;
        _rb.AddForce(new Vector3(0f, 50f, 0f));
        _isUp = true;
    }
    public void Card_Down()
    {
        _rb.useGravity = true;
        _isUp = false;
    }
}
1
 Аватар для ПСВ
39 / 32 / 8
Регистрация: 29.03.2020
Сообщений: 184
29.08.2021, 18:52  [ТС]
samana, бро, всё верно, всё работает. Я только что сам примерно так же написал и заработало. Но есть один момент: пока я не написал в Start строку
C#
1
oldCard = GetComponent<UpDownScript>();
Мне писало ошибку: Null Reference Exception: Object reference not set to an instance of an object. Почему у тебя её нет, что за магия? )
И да, почему скрипт-то плохой, даже после редактирования? )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.08.2021, 18:52
Помогаю со студенческими работами здесь

Деактивация индекса
Всем добрый день. В какой транзакции должна происходить деактивация/активация индексов при добавлении данных? В этой же, в которой...

Деактивация окон
После запуска Windows рабочий стол является активным, а нижняя панель не активна (при наведении на неё курсором она не реагирует, жмём...

Деактивация кнопки
Здрасте! У меня есть три формы отправки: &lt;form&gt;&lt;input type=&quot;text&quot; name=&quot;one&quot;&gt;&lt;input type=&quot;submit&quot;...

Деактивация кнопок
При запуске формы , 2-4-5 кнопки деактивируются. После нажатия на 1ую кнопку , 2-4-5 кнопки активируются. Но выходит так : при запуске...

Деактивация кнопки на 3 секунды
привет форумчане, у меня есть кнопка, которая обновляет данные. хочу после нажатия на нее деактивировать кнопку на 3 секунды,...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru