Я добавил капсульный коллайдер для рендеринга строк вручную, создав его экземпляр вокруг линии. Я уже добавляю разные спрайты в эту сцену. Я обнаружив касание этих спрайтов, используя Physics2D Raycaster наОсновная камера и в сценарии с помощью IPointerEnterHandler и их в нужный GameObject, содержащий рендерер спрайта. Пример кода приведен ниже
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");
}
}