Arrastrando y moviendo juego 2D
así como muestran mis hilos anteriores, estoy creando ungameObject
de imágenes de sprites en tiempo de ejecución usando este código:
tex = Resources.Load<Texture2D>("pig") as Texture2D;
Sprite sprite = new Sprite();
sprite = Sprite.Create(tex, new Rect(0, 0, 250, 150), new Vector2(0.5f, 0.5f));
GameObject newSprite = new GameObject();
newSprite.AddComponent<Rigidbody2D>();
newSprite.GetComponent<Rigidbody2D>().gravityScale = 0f;
newSprite.AddComponent<ObjectMovement>();
newSprite.AddComponent<SpriteRenderer>();
SR = newSprite.GetComponent<SpriteRenderer>();
SR.sprite = sprite;
Como ves, agregué un script "ObjectMovement
", Quiero comprobar en este script si alguien está arrastrando este particulargameObject
y si es así, haz que siga la posición táctil, solo por mencionar que este juego es 2D. Nunca uséRays
oRaycast
así que no estoy seguro de dónde me equivoqué. De todos modos aquí está mi código de script:
public SpriteRenderer selection=null;
void Update()
{
if (Input.touchCount >= 1)
{
foreach (Touch touch in Input.touches)
{
Ray ray = Camera.main.ScreenPointToRay(touch.position);
RaycastHit hit;
switch (touch.phase)
{
case TouchPhase.Began:
if (Physics.Raycast(ray, out hit, 100))
selection = hit.transform.gameObject.GetComponent<SpriteRenderer>();
break;
case TouchPhase.Moved:
selection.transform.position = new Vector2(selection.transform.position.x + touch.position.x / 10, selection.transform.position.y + touch.position.y / 10);
break;
case TouchPhase.Ended:
selection = null;
break;
}
}
}
}
Básicamente, al tocar la pantalla, dispara unray
y verifica quégameObject
está en esta posición, cuando mueva el dedo haga que lo siga. Arrastrar y soltar. Gracias.
EDITAR: Noté que el script está adjunto a cadagameObject
que no es efectivo, alguna idea?