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

Не работает скрипт наведения мыши на 3D объект

16.03.2024, 20:04. Показов 380. Ответов 6

Author24 — интернет-сервис помощи студентам
Условие такое:

При наведении мыши на заданный 3Д объект, объект Point Light должен включиться. Если мышь не наведена на заданный 3Д объект, то, соответственно, Point Light выключается.

Вот скрипт, но он некорректно работает. То-есть при изначально выключенном Point Light скрипт вообще ничего не делает. Если Point Light со старта включен, то при приближении к заданному объекту, даже если мышь не касается его, то свет почему-то выключается и обратно больше не включается.

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 System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class MouseNavigateMenu : MonoBehaviour
{
 
    public GameObject cubeObject;
 
    public GameObject pointLightObject;
 
 
    private Light pointLight;
    // Start is called before the first frame update
    void Start()
    {
        pointLight = pointLightObject.GetComponent<Light>();
    }
 
    // Update is called once per frame
    void Update()
    {
 
            RaycastHit hit;
 
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
 
 
        if (Physics.Raycast(ray, out hit))
 
        {
 
            if (hit.transform == cubeObject.transform)
 
            {
 
                pointLight.enabled = true;
 
            }
            else
            {
                pointLight.enabled = false;
            }
 
        }
 
 
 
 
    }
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.03.2024, 20:04
Ответы с готовыми решениями:

Считывание наведения указателя мыши на объект Windows Forms
Как считать наведённ ли курсор мыши на объект Windows Forms? Например: Мне дан PictureBox и при наведении на него мне нужно изменить...

Проверка наведения мыши на интерфейс
Добрый день, подскажите как можно узнать наведен ли курсор мыши на элемент интерфейса или нет, мне это нужно чтобы отключить воздействие...

Обработка наведения мыши onmouseover
Добрый день! Нужна помощь, сделал обработку наведения мыши.Скрипт меняет цвет фона кнопки при наведении на него курсора мыши, но когда...

6
1065 / 274 / 147
Регистрация: 30.07.2022
Сообщений: 1,706
Записей в блоге: 4
16.03.2024, 20:21
Aquander, для ваших целей подойдет OnMouseEnter()
1
0 / 0 / 0
Регистрация: 23.12.2022
Сообщений: 72
16.03.2024, 20:32  [ТС]
Как я понял код должен выглядеть так:

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
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class MouseNavigateMenu : MonoBehaviour
{
 
    public GameObject cubeObject;
 
    public GameObject pointLightObject;
 
 
    private Light pointLight;
    // Start is called before the first frame update
    void Start()
    {
        pointLight = pointLightObject.GetComponent<Light>();
    }
 
    // Update is called once per frame
    void Update()
    {
 
 
    }
    void OnMouseEnter()
    {
        pointLight.enabled = true;
    }
}
Но проблема в том что он не работает.

правка* - забыл добавить OnMouseExit(), но от этого суть не меняется.
0
1065 / 274 / 147
Регистрация: 30.07.2022
Сообщений: 1,706
Записей в блоге: 4
16.03.2024, 20:45
Aquander, есть пара уточнений
1) на каком объекте висит скрипт?
2) на какой объект наводится мышь?
3) это что за объект? public GameObject cubeObject;
4) на объекте, на который наводите мышь есть Collider???

Добавлено через 2 минуты
и сразу пару пояснений:
пункт 1 и 2 - это должен быть один и тот же объект. (исходя и х архитектуры вашего кода)
и без коллайдера не будет работать.
1
0 / 0 / 0
Регистрация: 23.12.2022
Сообщений: 72
16.03.2024, 20:49  [ТС]
1) скрипт весит на Point Light, который должен потухнуть или зажечься в зависимости от того наведена ли мышь на Osborne 1 или нет.
2) на объект под названием Osborne 1 (см. скриншот)
3) 3Д объект Osborne 1 который состоит из нескольких дочерних объектов (см. скриншот)
4) на объекте присутствует коллайдер. В нем включены Is Trigger и Provides Contacts.
Миниатюры
Не работает скрипт наведения мыши на 3D объект  
0
1065 / 274 / 147
Регистрация: 30.07.2022
Сообщений: 1,706
Записей в блоге: 4
16.03.2024, 22:17
Лучший ответ Сообщение было отмечено Aquander как решение

Решение

Aquander, тогда вам проще добавить коллайдер на светильник

а написать так

C# Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using UnityEngine;
 
public class MouseNavigateMenu : MonoBehaviour
{
    private Light pointLight;
 
    void Start()
    {
        pointLight = pointLightObject.GetComponent<Light>();
    } 
 
    void OnMouseEnter()
    {
        pointLight.enabled = true;
    }
 
    void OnMouseExit()
    {
        pointLight.enabled = false;
    }
}
1
0 / 0 / 0
Регистрация: 23.12.2022
Сообщений: 72
16.03.2024, 23:56  [ТС]
Огромное вам спасибо за предоставленную помощь, ieretsumi. Все работает отлично. Теперь знаю что существует такая вещь как OnMouseEnter() и OnMouseExit(). )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.03.2024, 23:56
Помогаю со студенческими работами здесь

Обработка событий наведения мыши
мувиклипу присвоены два события on (rollOver) { tellTarget (&quot;_root.sub&quot;) {gotoAndPlay(2);} tellTarget (&quot;_root.str1&quot;)...

Отслеживание наведения курсора на кнопку мыши
Сделал форму в VBA (в Excel), навешал на нее кнопки и задумался, можно ли как-то через обработку событий (а может еще как-то) отследить...

Градиент от места наведения мыши на кнопку
Подскажите, как правильно реализовать?

Написать функцию, обрабатывающую события наведения мыши.
1)Написать функцию JavaScript, которая меняет размер букв при выходе курсора мыши из абзаца. 2)Написать функцию JavaScrip, которая меняет...

Почему картинка появляется только после наведения на нее мыши
Доброго всем времени суток! Посмотрите ролик - https://cloud.mail.ru/public/118de3cc749c%2FMouse2.avi Никак не пойму, почему...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Работа с объемным DOM в javascript
Htext 04.04.2025
Сегодня прочитал статью тут о расходах памяти в JS, ее утечках и т. п. И вот что вспомнил из своей недавней практики. Может, кому пригодится. Хотя, в той статье об этом тоже есть. Дело в том, что я. . .
Оптимизация производительности Node.js с помощью кластеризации
run.dev 04.04.2025
Масштабирование приложений для обработки тысяч и миллионов запросов — обыденная задача для многих команд. Node. js, благодаря своей асинхронной событийно-ориентированной архитектуре, стал популярной. . .
Управление зависимостями в Python с Poetry
py-thonny 04.04.2025
Стандартный инструмент для установки пакетов в Python - pip - прекрасно справляется с базовыми сценариями: установил пакет командой pip install и используешь его. Но что произойдёт, когда разные. . .
Мониторинг с Prometheus в PHP
Jason-Webb 04.04.2025
Prometheus выделяется среди других систем мониторинга своим подходом к сбору и хранению метрик. В отличие от New Relic, который использует агентный подход и отправляет данные во внешнее хранилище,. . .
Пакет Context в Golang: Управление потоками и ресурсами
golander 04.04.2025
Работа с горутинами в Go часто напоминает управление непослушными детьми - они разбегаются кто куда, делают что хотят и не всегда завершаются вовремя. К счастью, в Go 1. 7 появился пакет context,. . .
Контейнеризация React приложений с Docker
Reangularity 03.04.2025
Контейнеризация позволяет упаковать приложение со всеми его зависимостями в автономный контейнер, который можно запустить на любой платформе с установленным Docker. Это существенно упрощает процессы. . .
Свой попап в SwiftUI
mobDevWorks 03.04.2025
SwiftUI, как декларативный фреймворк от Apple, предоставляет множество инструментов для создания пользовательских интерфейсов. В нашем распоряжении есть такие API как alerts, popovers, action sheets. . .
Антипаттерны микросервисной архитектуры
ArchitectMsa 03.04.2025
Хорошо спроектированная микросервисная система может выдержать испытание временем, оставаясь гибкой, масштабируемой и устойчивой к большинству проблем. Такая архитектура обладает высоким уровнем. . .
std::mutex в C++: Советы и примеры использования
bytestream 03.04.2025
std::mutex - это механизм взаимного исключения, который гарантирует, что критический участок кода выполняется только одним потоком в каждый момент времени. Это простое, но могущественное средство. . .
Не удержался от оценки концепции двигателя Стирлинга.
Hrethgir 03.04.2025
Сколько не пытался - она выдавала правильные схемы, причём случайно рисовала горячие области в середине, холодные по краям, трубки с краёв в низ и магнит в соединяющей, но при этой выдавала описание. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер