Как обнаружить касание на коллайдерах для линейного рендера, добавленного вручную в Unity? - PullRequest
0 голосов
/ 27 сентября 2019

Я добавил капсульный коллайдер для рендеринга строк вручную, создав его экземпляр вокруг линии. Я уже добавляю разные спрайты в эту сцену. Я обнаружив касание этих спрайтов, используя Physics2D Raycaster наОсновная камера и в сценарии с помощью IPointerEnterHandler и их в нужный GameObject, содержащий рендерер спрайта. Пример кода приведен ниже

3d Collider added

 public class TouchDetect:MonoBehaviour,IPointerEnterHandler,IPointerExitHandler
    {

     public void OnPointerEnter(PointerEventData eventData)
      {
        if (eventData.pointerEnter.gameObject.name == "redcircle2(Clone)" )
            {
                sound[1].source.clip = sound[1].clip;
                sound[1].source.loop = true;
                sound[1].source.Play();
            }
       }

    }

Капсульный коллайдер, который я добавил, - это 3d collider.Как обнаружить касание на верхней части коллайдера вместе с 2d коллайдерами?

Я пробовал приведенный ниже код, но не работает.

     if (Input.touchCount > 0 || Input.GetMouseButton(0))
      {
       Vector2 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
       bool collided = this.GetComponent<CapsuleCollider>().bounds.Contains(mousePos);




                if (collided)
                {
                    Debug.Log("Touched collider " );
                }
                else
                {
                    Debug.Log("Not collided");
                }
    }

1 Ответ

1 голос
/ 27 сентября 2019
if (eventData.pointerEnter.gameObject.name == "redcircle2(Clone)")

Я почти уверен, что в этой строке происходит ошибка.Если вы создаете экземпляр, тогда я собираюсь предположить, что вы создаете экземпляр из публичного Transform, и в него вы положили какой-то префаб с уже добавленной коллизией, верно?Затем проверьте, какой тег игры, который вы добавили в PREFAB, обнаружите, а не "redcircle2(Clone)".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...