@OkeanKoda

Почему не срабатывает OnMouseDown()?

Пробовал OnPointerClick, так же не работает. Бьюсь уже часа два(
Другие коллайдеры не пересекает.
Дочерние объекты закинул в слой IgnoreRaycast и сместил по оси z, тоже не помогло.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.EventSystems;

public class OnClickSquare : MonoBehaviour
{
    public void OnMouseDown()
	{
		Debug.Log("клик");
	}
}

61ababec2147d773805224.png
  • Вопрос задан
  • 179 просмотров
Решения вопроса 1
ShockWave2048
@ShockWave2048
imposter
Вот пример без кнопки, работает UI элемент (зеленый) и простой объект с BoxCollider2D (красный)
- в сцене нужен объект с EventSystem
- для коллайдеров на камере должен быть Physics2DRaycater
- для UI элементов канвас должен иметь GraphicRaycaster
- слушающий объект должен иметь скрипт с имплементацией IPointerDownHandler
using UnityEngine;
using UnityEngine.EventSystems;

public class PointerListener : MonoBehaviour, IPointerDownHandler
{
    public void OnPointerDown(PointerEventData eventData)
    {
        Debug.Log("## " +name + " - "+ eventData.ToString());       
    }
}

СКАЧАТЬ ПРОЕКТ [2022.1.0a16]
61ac9d77c6c52796402930.jpeg
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
freeExec
@freeExec
Участник OpenStreetMap
Должен быть ещё EventSystem на сцене. Если его выделить, он покажет что там за объекты под мышкой и кто мешает. Собственно никакие коллайдеры и не нужны.
Ответ написан
@mustGamedev
C# Unity developer
IPointerDown попробуй
Ответ написан
Комментировать
@OkeanKoda Автор вопроса
В итоге я просто повесил на объект кнопку, Image с RaycastTarget и скрипт
public void OnClick()
	{
		if (isRight == true)
		{
			//анимация частиц
		}
		else
		{
			Debug.Log("клик");
		}
Так работает. Но как сделать нажатие без кнопки так и не понял)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы