[TUTORIAL] Movimentar GameObject 2D com Touch ou Click
2 participantes
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 : 3114
REPUTAÇÃO : 4
Idade : 35
Áreas de atuação : Telecomunicações
Respeito as regras :
Re: [TUTORIAL] Movimentar GameObject 2D com Touch ou Click
Legal, muito útil
JohnRambo- Moderador
- PONTOS : 5173
REPUTAÇÃO : 661
Idade : 24
Áreas de atuação : Unity;
Programação;
Música e Sonorização;
Graduado em Análise e Desenvolvimento de Sistemas;
Respeito as regras :
Tópicos semelhantes
» [TUTORIAL] Introdução para iniciante e tutorial de Click move com raycast
» A Unity detecta o click mouse como um touch?
» [TUTORIAL] Mover um botão do UI com touch e aumentar o tamanho
» [TUTORIAL] Mover Objeto para lugar do click do Mouse
» [TUTORIAL] Mover câmera em 2D com TOUCH
» A Unity detecta o click mouse como um touch?
» [TUTORIAL] Mover um botão do UI com touch e aumentar o tamanho
» [TUTORIAL] Mover Objeto para lugar do click do Mouse
» [TUTORIAL] Mover câmera em 2D com TOUCH
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos