Muchas gracias por responder @lightbug ! Finalmente lo he conseguido con las pistas que me has dado
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Páginas1
#2
General (Antiguo) / Problema con los eventos Touch
Septiembre 06, 2018, 05:28:58 PM
Buenas tardes, me encuentro haciendo un juego en 2D y me ha surgido una duda con los eventos Touch pero también con los Raycast para detectar en este caso el collider que estás pulsando.
Tengo un sprite 2D que quiero mover por el escenario del juego y conseguí hacerlo pero con colliders 3D ya que era lo que me pareció más sencillo utilizando Raycast y los eventos de Touch(Began, Moved y Ended). El problema llega cuando he intentado convertir esto para colliders 2D ya que ahí tengo edge collider para ajustar el perímetro a mi objeto en 2D. He probado con Raycast2D pero no hay manera de conseguir que con los eventos Touch y un collider 2D se mueva el objeto.
Os dejo el código que tengo ahora mismo y con el que me funciona si tengo colliders 3D.
Tengo un sprite 2D que quiero mover por el escenario del juego y conseguí hacerlo pero con colliders 3D ya que era lo que me pareció más sencillo utilizando Raycast y los eventos de Touch(Began, Moved y Ended). El problema llega cuando he intentado convertir esto para colliders 2D ya que ahí tengo edge collider para ajustar el perímetro a mi objeto en 2D. He probado con Raycast2D pero no hay manera de conseguir que con los eventos Touch y un collider 2D se mueva el objeto.
Os dejo el código que tengo ahora mismo y con el que me funciona si tengo colliders 3D.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[System.Serializable]
public class Boundary
{
public float xMin, xMax, yMin, yMax;
}
public class TouchManager : MonoBehaviour {
GameObject gObj = null;
Plane objPlane;
Vector3 m0;
public Boundary boundary;
Ray GenerateMouseRay(Vector3 touchPos)
{
Vector3 mousePosFar = new Vector3(touchPos.x, touchPos.y, Camera.main.farClipPlane);
Vector3 mousePosNear = new Vector3(touchPos.x, touchPos.y, Camera.main.nearClipPlane);
Vector3 mousePosF = Camera.main.ScreenToWorldPoint(mousePosFar);
Vector3 mousePosN = Camera.main.ScreenToWorldPoint(mousePosNear);
Ray mr = new Ray(mousePosN, mousePosF-mousePosN);
return mr;
}
// Update is called once per frame
void FixedUpdate ()
{
if(Input.touchCount > 0)
{
if(Input.GetTouch(0).phase == TouchPhase.Began)
{
Ray mouseRay = GenerateMouseRay(Input.GetTouch(0).position);
RaycastHit