[Resolvido] Implementação de Touch em script modo Swipe
2 participantes
Página 1 de 1
[Resolvido] Implementação de Touch em script modo Swipe
Hello pessoal,
Estou fazendo um jogo assim: https://i.imgur.com/X4k9dFO.png
Tenho um script para mover o personagem para cada pista, porem preciso implementar um input touch nele, alguem sabe como fazer no estilo swipe(deslizar na tela).
Lembrando que o jogo é em isométrica, e o personagem vai para o lado no eixo Z.
Se alguém puder ajudar agradeço muito!
Este é o código da movimentação:
Estou fazendo um jogo assim: https://i.imgur.com/X4k9dFO.png
Tenho um script para mover o personagem para cada pista, porem preciso implementar um input touch nele, alguem sabe como fazer no estilo swipe(deslizar na tela).
Lembrando que o jogo é em isométrica, e o personagem vai para o lado no eixo Z.
Se alguém puder ajudar agradeço muito!
Este é o código da movimentação:
- Código:
using UnityEngine;
using System.Collections;
public class ControlPlayer : MonoBehaviour {
float lerpTime;
float currentLertTime;
float perc = 1;
Vector3 startPos;
Vector3 endPos;
bool firstInput;
void Update ()
{
if(Input.GetButtonDown("up") || (Input.GetButtonDown("down") || (Input.GetButtonDown("left") || (Input.GetButtonDown("right")))))
{
if(perc == 1);
{
lerpTime = 1;
currentLertTime = 0;
firstInput = true;
}
}
startPos = gameObject.transform.position;
if(Input.GetButtonDown("left") && gameObject.transform.position == endPos)
{
endPos = new Vector3(transform.position.x, transform.position.y, transform.position.z + 1.5f);
}
if(Input.GetButtonDown("right")&& gameObject.transform.position == endPos)
{
endPos = new Vector3(transform.position.x, transform.position.y, transform.position.z - 1.5f);
}
if (firstInput == true) {
currentLertTime += Time.deltaTime * 5;
perc = currentLertTime / lerpTime;
gameObject.transform.position = Vector3.Lerp (startPos, endPos, perc);
}
}
}
Última edição por Hardencio em Sex Abr 08, 2016 9:40 pm, editado 1 vez(es)
Hardencio- Avançado
- PONTOS : 3719
REPUTAÇÃO : 25
Áreas de atuação : Advergames and Casual Games
Respeito as regras :
Re: [Resolvido] Implementação de Touch em script modo Swipe
pera ai, pera ai, o personagem se move para os lados no eixo Z? isto não é "mudável" não?
você pode ter alguns problemas futuros em utilizar o eixo Z em vez do eixo X, com comandos como forword, dentre outros... pois toda a referência sempre é feita usando o eixo Z para ir para frente, e os outros para os lados...
você pode ter alguns problemas futuros em utilizar o eixo Z em vez do eixo X, com comandos como forword, dentre outros... pois toda a referência sempre é feita usando o eixo Z para ir para frente, e os outros para os lados...
Re: [Resolvido] Implementação de Touch em script modo Swipe
Certo, vou tentar mudar pro eixo X.
Mas, você acha que é possível implementar o touch nesse script que estou trabalhando?
Eu consegui implementar o touch nele através de toques, mas swipe ainda não tenho ideia de como fazer.
Mas, você acha que é possível implementar o touch nesse script que estou trabalhando?
Eu consegui implementar o touch nele através de toques, mas swipe ainda não tenho ideia de como fazer.
Hardencio- Avançado
- PONTOS : 3719
REPUTAÇÃO : 25
Áreas de atuação : Advergames and Casual Games
Respeito as regras :
Re: [Resolvido] Implementação de Touch em script modo Swipe
eh bastante simples implementar o deslize na tela, tente ver se consegue entender com este exemplo simples:
- Código:
using UnityEngine;
using System.Collections;
public class Mover : MonoBehaviour {
private float ponteiroX, ponteiroY;
void Update(){
//DETECTAR MOVIMENTOS
ponteiroX = ponteiroY = 0;
if (Input.touchCount > 0) {
ponteiroX = Input.touches [0].deltaPosition.x;
ponteiroY = Input.touches [0].deltaPosition.y;
}
//DEMONSTRAR MOVIMENTOS
if (ponteiroX > 0) {
Debug.Log ("moveuParaADireita");
}
if (ponteiroX < 0) {
Debug.Log ("moveuParaAEsquerda");
}
if (ponteiroY > 0) {
Debug.Log ("moveuParaACima");
}
if (ponteiroY < 0) {
Debug.Log ("moveuParaABaixo");
}
}
}
Re: [Resolvido] Implementação de Touch em script modo Swipe
Opa, agora que tenho essa base acho que vou conseguir. Se der certo ou não, postarei aqui!
Vlw man! :D
Vlw man! :D
Hardencio- Avançado
- PONTOS : 3719
REPUTAÇÃO : 25
Áreas de atuação : Advergames and Casual Games
Respeito as regras :
Re: [Resolvido] Implementação de Touch em script modo Swipe
Consegui adaptar ele no meu scrip, porem temos um erro...Se eu deslizo e mantenho o dedo na tela, o personagem vai farias vezes para o lado, tipo, vai de 1.5 á 1.5 do transform eixo Z que é o movimento que estabeleci no script.
O que eu quero é que mesmo se eu manter o dedo na tela depois do slide o personagem só mova uma vez, que só movimente esse 1.5 ou -1.5 para o lado.
Meu script ta assim:
O que eu quero é que mesmo se eu manter o dedo na tela depois do slide o personagem só mova uma vez, que só movimente esse 1.5 ou -1.5 para o lado.
Meu script ta assim:
- Código:
using UnityEngine;
using System.Collections;
public class SwipeControls : MonoBehaviour {
float lerpTime;
float currentLertTime;
float perc = 1;
Vector3 startPos;
Vector3 endPos;
bool firstInput;
private float ponteiroX, ponteiroY;
void Update(){
//DETECTAR MOVIMENTOS
ponteiroX = ponteiroY = 0;
if (Input.touchCount > 0) {
if(perc == 1);
{
lerpTime = 1;
currentLertTime = 2;
firstInput = true;
}
ponteiroX = Input.touches [0].deltaPosition.x;
ponteiroY = Input.touches [0].deltaPosition.y;
}
startPos = gameObject.transform.position;
//DEMONSTRAR MOVIMENTOS
if (ponteiroX > 0) {
Debug.Log ("moveuParaADireita");
}
if (ponteiroX < 0) {
Debug.Log ("moveuParaAEsquerda");
}
if (ponteiroY > 0) {
Debug.Log ("moveuParaACima");
endPos = new Vector3(transform.position.x, transform.position.y, transform.position.z + 1.5f);
}
if (ponteiroY < 0) {
Debug.Log ("moveuParaABaixo");
endPos = new Vector3(transform.position.x, transform.position.y, transform.position.z - 1.5f);
}
if (firstInput == true) {
currentLertTime += Time.deltaTime * 5;
perc = currentLertTime / lerpTime;
gameObject.transform.position = Vector3.Lerp (startPos, endPos, perc);
}
}
}
Hardencio- Avançado
- PONTOS : 3719
REPUTAÇÃO : 25
Áreas de atuação : Advergames and Casual Games
Respeito as regras :
Re: [Resolvido] Implementação de Touch em script modo Swipe
Não sei se vai funcionar... não testei, más tente isto:
- Código:
using UnityEngine;
using System.Collections;
public class SwipeControls : MonoBehaviour {
float lerpTime;
float currentLertTime;
float perc = 1;
private bool podeMover;
Vector3 startPos;
Vector3 endPos;
bool firstInput;
private float ponteiroY;
void Update(){
ponteiroY = 0;
if (Input.touchCount > 0) {
if (perc == 1) {
lerpTime = 1;
currentLertTime = 2;
firstInput = true;
}
ponteiroY = Input.touches [0].deltaPosition.y;
} else {
podeMover = true;
}
startPos = gameObject.transform.position;
if (ponteiroY > 0 && podeMover == true) {
endPos = new Vector3(transform.position.x, transform.position.y, transform.position.z + 1.5f);
podeMover = false;
}
if (ponteiroY < 0 && podeMover == true) {
endPos = new Vector3(transform.position.x, transform.position.y, transform.position.z - 1.5f);
podeMover = false;
}
if (firstInput == true) {
currentLertTime += Time.deltaTime * 5;
perc = currentLertTime / lerpTime;
gameObject.transform.position = Vector3.Lerp (startPos, endPos, perc);
}
}
}
Re: [Resolvido] Implementação de Touch em script modo Swipe
AeeHOOO funcionou!! Ta aplicando apenas um movimento cada swipe. Porem ta muito sensível, tipo as vezes só de tocar na tela sem deslizar ele aplica o movimento. Tem alguma ideia?
Hardencio- Avançado
- PONTOS : 3719
REPUTAÇÃO : 25
Áreas de atuação : Advergames and Casual Games
Respeito as regras :
Re: [Resolvido] Implementação de Touch em script modo Swipe
- Código:
> 0) {
isto determina a sensibilidade
qualquer input maior do que 0...
talvez deva aumentar este valor para 0.1f
Re: [Resolvido] Implementação de Touch em script modo Swipe
Mudei de vários modos a variável abaixo, colocando valor 0.1f, ou mais, ou -0.1f, ou 1. E não muda nada.
Tbm tentei mudar aqui e quando toco na tela meu player desaparece, tipo ele não para de ir para o lado.
Tem certeza que é assim que diminui a sensibilidade do deslize?
- Código:
if (Input.touchCount > 0) {
Tbm tentei mudar aqui e quando toco na tela meu player desaparece, tipo ele não para de ir para o lado.
- Código:
if (ponteiroY > 0 && podeMover == true) {
Tem certeza que é assim que diminui a sensibilidade do deslize?
Hardencio- Avançado
- PONTOS : 3719
REPUTAÇÃO : 25
Áreas de atuação : Advergames and Casual Games
Respeito as regras :
Re: [Resolvido] Implementação de Touch em script modo Swipe
Adicionei uma barra de sensibilidade para facilitar... tente agora
- Código:
using UnityEngine;
using System.Collections;
public class SwipeControls : MonoBehaviour {
float lerpTime;
float currentLertTime;
float perc = 1;
[Range(0.05f,1)] public float sensibilidade = 0.1f;
private bool podeMover;
Vector3 startPos;
Vector3 endPos;
bool firstInput;
private float ponteiroY;
void Update(){
ponteiroY = 0;
if (Input.touchCount > 0) {
if (perc == 1) {
lerpTime = 1;
currentLertTime = 2;
firstInput = true;
}
if (Mathf.Abs (Input.touches [0].deltaPosition.y) > sensibilidade) {
ponteiroY = Input.touches [0].deltaPosition.y;
} else {
ponteiroY = 0;
}
} else {
podeMover = true;
}
startPos = gameObject.transform.position;
if (ponteiroY > 0 && podeMover == true) {
endPos = new Vector3(transform.position.x, transform.position.y, transform.position.z + 1.5f);
podeMover = false;
}
if (ponteiroY < 0 && podeMover == true) {
endPos = new Vector3(transform.position.x, transform.position.y, transform.position.z - 1.5f);
podeMover = false;
}
if (firstInput == true) {
currentLertTime += Time.deltaTime * 5;
perc = currentLertTime / lerpTime;
gameObject.transform.position = Vector3.Lerp (startPos, endPos, perc);
}
}
}
Tópicos semelhantes
» [RESOLVIDO] COMO EXECUTAR UM SCRIPT NO MODO DE EDIÇÃO?
» Script Controle. Modo = (C# e Java Script)
» [TUTORIAL] Modo Janela ~ Tela Cheia ( Java Script )
» Ajuda com script de Touch
» Simple Touch Camera Script
» Script Controle. Modo = (C# e Java Script)
» [TUTORIAL] Modo Janela ~ Tela Cheia ( Java Script )
» Ajuda com script de Touch
» Simple Touch Camera Script
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos