[TUTORIAL] Movimentar GameObject 2D com Touch ou Click
Página 1 de 1
[TUTORIAL] Movimentar GameObject 2D com Touch ou Click
Sou novato no Fórum, desculpe-me se esse post não estiver padrão.
Estou aprendendo a desenvolver no Unity utilizando os Assets disponibilizados gratuitamente, sempre modificando para que funcione nas plataformas mobile.
Criei esse tópico para compartilhar um script de movimentação de um GameObject, de modo que quando você clica ou toque em cima dele você possa movimenta-lo livremente na tela.
O script não é de minha autoria, portanto não conseguirei tirar muitas duvidas
.
Apenas funcionando para objetos 2D, sendo necessário modificações para 3D!
Fonte:http://k2nicestudio.com
Estou aprendendo a desenvolver no Unity utilizando os Assets disponibilizados gratuitamente, sempre modificando para que funcione nas plataformas mobile.
Criei esse tópico para compartilhar um script de movimentação de um GameObject, de modo que quando você clica ou toque em cima dele você possa movimenta-lo livremente na tela.
O script não é de minha autoria, portanto não conseguirei tirar muitas duvidas

Apenas funcionando para objetos 2D, sendo necessário modificações para 3D!
- Código:
using UnityEngine;
using System.Collections;
//using UnityEngine.UI;
//using UnityEngine.EventSystems;
public class TouchMovePlayerNEW : MonoBehaviour{
//Este codigo e para click/drag gameobject 2D
//Cameraprojeção deve estar como Orthographic
//Adicionar um Collider (não 2DCollider) no gameObject
public GameObject gameObjectTodrag; //Objeto que sera movido
public Vector3 GOcenter; //Centro do objeto
public Vector3 touchPosition; //Touch ou posição do Click
public Vector3 offset;//vector entre touchpoint/mouseclick para o Centro do Objeto
public Vector3 newGOCenter; //novo Centro do objeto
RaycastHit hit; //Armazena informação que pegou o objeto
public bool draggingMode = false;
void Start()
{
}
void Update()
{
//***********************
// *** CLICK TO DRAG ****
//***********************
#if UNITY_EDITOR
//Quando usar click esquerdo do mouse
if (Input.GetMouseButtonDown(0))
{
//converte a posição do click para um ray
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
//Se o ray acertar (hit) o Collider (não 2DCollider)
if (Physics.Raycast(ray, out hit))
{
gameObjectTodrag = hit.collider.gameObject;
GOcenter = gameObjectTodrag.transform.position;
touchPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
offset = touchPosition - GOcenter;
draggingMode = true;
}
}
//Todo o frame quanto o click esquerdo estiver apertado
if (Input.GetMouseButton(0))
{
if (draggingMode)
{
touchPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
newGOCenter = touchPosition - offset;
gameObjectTodrag.transform.position = new Vector3(newGOCenter.x, newGOCenter.y, GOcenter.z);
}
}
//Quando solta o click do mouse
if (Input.GetMouseButtonUp(0))
{
draggingMode = false;
}
#endif
//***********************
// *** TOUCH TO DRAG ****
//***********************
foreach (Touch touch in Input.touches)
{
switch (touch.phase)
{
//Quando há um toque
case TouchPhase.Began:
//converte a posição do toque para um Ray
Ray ray = Camera.main.ScreenPointToRay(touch.position);
//Se o ray acertar (hit) o Collider (não 2DCollider)
// if (Physics.Raycast(ray, out hit))
if (Physics.SphereCast(ray, 0.3f, out hit))
{
gameObjectTodrag = hit.collider.gameObject;
GOcenter = gameObjectTodrag.transform.position;
touchPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
offset = touchPosition - GOcenter;
draggingMode = true;
}
break;
case TouchPhase.Moved:
if (draggingMode)
{
touchPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
newGOCenter = touchPosition - offset;
gameObjectTodrag.transform.position = new Vector3(newGOCenter.x, newGOCenter.y, GOcenter.z);
}
break;
case TouchPhase.Ended:
draggingMode = false;
break;
}
}
}
}
Fonte:http://k2nicestudio.com
ldanielz- Iniciante
-
PONTOS : 1709
REPUTAÇÃO : 4
Idade : 31
Áreas de atuação : Telecomunicações
Respeito as regras :
Página 1 de 1
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum