touch do android em C# Unity
5 participantes
Página 1 de 1
touch do android em C# Unity
Como faz o esquema de deslizar o dedo e identificar como uma ação.
É em C# na unity e um exemplo: subway surfers
É em C# na unity e um exemplo: subway surfers
niao- Avançado
- PONTOS : 2994
REPUTAÇÃO : 17
Respeito as regras :
Re: touch do android em C# Unity
niao escreveu:Como faz o esquema de deslizar o dedo e identificar como uma ação.
É em C# na unity e um exemplo: subway surfers
Oii, Dá uma Olhada Aqui -> http://www.fabricadejogos.net/posts/tutorial-obtendo-direcao-do-deslizar-do-touch/
Magnatah- Instrutor
- PONTOS : 3548
REPUTAÇÃO : 209
Idade : 24
Áreas de atuação : Dєรєиvσlvєdσя Wєb(Fяσит-єиd), Blєиdєя, υиiтy, C#, ρнρ є Jαvαรcяiρт.
Respeito as regras :
JohnRambo- Moderador
- PONTOS : 5172
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 :
Re: touch do android em C# Unity
eu testei aqui mas parece não resultar não sei o que to fazendo de errado vê se você entendeMagnatah escreveu:niao escreveu:Como faz o esquema de deslizar o dedo e identificar como uma ação.
É em C# na unity e um exemplo: subway surfers
Oii, Dá uma Olhada Aqui -> http://www.fabricadejogos.net/posts/tutorial-obtendo-direcao-do-desliza
(dei uma ajeitada para meu jeito de pensar e o do cara tinha algumas inexplicaveis coisas que surgem e que nunca foi criado como direçao e posiçao mas dei o meu melhor e não da nenhum erro mas tambem não gera resultados)
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MovePlayer : MonoBehaviour {
public bool Vivo;
public float Velocidade;
public bool Iniciou;
public bool EstaNoChao;
public int direcao;
public bool tocou1;
public bool estaTocando;
public Vector2 posicaoInicial;
public Vector2 posicaoFinal;
void Start () {
direcao = 0;
Vivo = true;
Velocidade = 0.5f;
Iniciou = true;
EstaNoChao = true;
estaTocando = false;
}
void Update () {
if (direcao > 0) {
Pulou ();
}
if (Vivo) {
if (Iniciou) {
transform.Translate (Velocidade*Time.timeScale, 0, 0);
if (Input.touchCount > 0 && !tocou1 && Input.GetTouch (0).phase == TouchPhase.Began) {
Vector2 toque = Camera.main.ScreenToWorldPoint (Input.GetTouch (0).position);
tocou1 = true;
posicaoInicial = toque;
Debug.Log ("clicou");
}
if (Input.touchCount > 0 && Input.GetTouch (0).phase == TouchPhase.Ended && tocou1) {
tocou1 = false;
Vector2 toque = Camera.main.ScreenToWorldPoint (Input.GetTouch (0).position);
posicaoFinal = toque;
if (Vector2.Distance (posicaoInicial, posicaoFinal) > 1)
finalizar ();
}
}
}
}
public void finalizar (){
float x = posicaoFinal.x - posicaoInicial.x;
float y = posicaoFinal.y - posicaoInicial.y;
if (Mathf.Abs (x) > Mathf.Abs (y)) {
if (posicaoFinal.x > posicaoInicial.x) {
direcao = 6;
} else {
direcao = 4;
}
} else {
if (posicaoFinal.y > posicaoInicial.y) {
direcao = 8;
} else {
direcao = 2;
}
}
Debug.Log (direcao.ToString ());
}
public void Pulou(){
if (EstaNoChao && Vivo) {
transform.Translate (0, 100, 0);
}
}
}
niao- Avançado
- PONTOS : 2994
REPUTAÇÃO : 17
Respeito as regras :
Re: touch do android em C# Unity
eu acabei de adicionar o tocou1 do meu script como false porque tinha esquecido mas não funcionou
niao- Avançado
- PONTOS : 2994
REPUTAÇÃO : 17
Respeito as regras :
Re: touch do android em C# Unity
- Código:
if (Input.touchCount > 0 && !tocou1 && Input.GetTouch (0).phase == TouchPhase.Began)
.....//até aí não vejo problema, tem q ter mais de um dedo na tela, se não me engano
if (Input.touchCount > 0 && Input.GetTouch (0).phase == TouchPhase.Ended && tocou1) {
.... Mas nesse aqui, não tem como ter por exemplo 2 dedos na tela e ao mesmo tempo eles terem saído ( Ended) da tela. Gera uma condição q não Será satisfeita. Tente mudar isso. Ao invés de verificar diretamente o touch count, tente armazenar ele um int e use o int no seu if. Lembre de zerar qndo tirar o dedo rsrs. Talvez isso te ajude.
Tiago95- Avançado
- PONTOS : 2629
REPUTAÇÃO : 32
Respeito as regras :
Re: touch do android em C# Unity
Do jeito q está aí, tente colocar 3 dedos na tela em sequência, um de cada vez. Depois, o primeiro dedo vc arrasta como quer, mantendo os outros dois parados na tela. Possivelmente vc satisfará a condição do jeito q está no seu script. Rsrs. Eu acho, não tenho certeza rsrs. Estou sem o PC, depois eu testo e vejo certinho p vc, se não tiver conseguido resolver ainda. Abç
Tiago95- Avançado
- PONTOS : 2629
REPUTAÇÃO : 32
Respeito as regras :
Re: touch do android em C# Unity
n aconteceu nada kkTiago95 escreveu:Do jeito q está aí, tente colocar 3 dedos na tela em sequência, um de cada vez. Depois, o primeiro dedo vc arrasta como quer, mantendo os outros dois parados na tela. Possivelmente vc satisfará a condição do jeito q está no seu script. Rsrs. Eu acho, não tenho certeza rsrs. Estou sem o PC, depois eu testo e vejo certinho p vc, se não tiver conseguido resolver ainda. Abç
niao- Avançado
- PONTOS : 2994
REPUTAÇÃO : 17
Respeito as regras :
Re: touch do android em C# Unity
dei uma alterada mas nada acontece
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MovePlayer : MonoBehaviour {
public bool Vivo;
public float Velocidade;
public bool Iniciou;
public bool EstaNoChao;
public bool tocou1;
public Vector2 posicaoInicial;
public Vector2 posicaoFinal;
void Start () {
tocou1 = false;
Vivo = true;
Velocidade = 0.5f;
Iniciou = true;
EstaNoChao = true;
}
void Update () {
if (Vivo) {
if (Iniciou) {
transform.Translate (Velocidade*Time.timeScale, 0, 0);
if (Input.touchCount > 0 && !tocou1 && Input.GetTouch (0).phase == TouchPhase.Began) {
Vector2 toque = Camera.main.ScreenToWorldPoint (Input.GetTouch (0).position);
tocou1 = true;
posicaoInicial = toque;
}
if (Input.GetTouch (0).phase == TouchPhase.Moved) {
tocou1 = false;
Vector2 toque2 = Camera.main.ScreenToWorldPoint (Input.GetTouch (0).position);
posicaoFinal = toque2;
}
if (Input.touchCount > 0 && Input.GetTouch (0).phase == TouchPhase.Ended) {
finalizar ();
}
}
}
}
public void finalizar (){
float x = posicaoFinal.x - posicaoInicial.x;
float y = posicaoFinal.y - posicaoInicial.y;
if (Mathf.Abs (x) > Mathf.Abs (y)) {
if (posicaoFinal.x > posicaoInicial.x) {
IrDireita ();
} else {
IrEsquerda ();
}
} else {
if (posicaoFinal.y > posicaoInicial.y) {
Pulou ();
} else {
Rolou ();
}
}
}
public void Pulou(){
if (EstaNoChao && Vivo) {
transform.Translate (0, 0.1f, 0);
//realizar anim
}
}
public void Rolou(){
if (Vivo) {
//botar animação e reduzir collider
if (!EstaNoChao) {
transform.Translate (1, 0, 0);
transform.Translate (0, 0.1f, 0);
//aumentar a gravidade para descer rapido no pulo
}
}
}
public void IrDireita(){
if (Vivo) {
transform.Translate (1, 0, 0);
}
}
public void IrEsquerda(){
if (Vivo) {
transform.Translate (-1, 0, 0);
}
}
}
niao- Avançado
- PONTOS : 2994
REPUTAÇÃO : 17
Respeito as regras :
Re: touch do android em C# Unity
Por que não utiliza o método que eu utilizei neste tutorial que o Rambo linkou??
https://www.schultzgames.com/t1156-tutorial-mover-personagem-com-touch-no-estilo-subway-surfers?highlight=subway
Eu utilizo apenas o GetTouch[0] e o resto eu ignoro, afinal, só estou querendo saber sobre o toque de um dedo.
https://www.schultzgames.com/t1156-tutorial-mover-personagem-com-touch-no-estilo-subway-surfers?highlight=subway
Eu utilizo apenas o GetTouch[0] e o resto eu ignoro, afinal, só estou querendo saber sobre o toque de um dedo.
Re: touch do android em C# Unity
eu tava achando muito complicado e muita coisa kkkMarcosSchultz escreveu:Por que não utiliza o método que eu utilizei neste tutorial que o Rambo linkou??
https://www.schultzgames.com/t1156-tutorial-mover-personagem-com-touch-no-estilo-subway-surfers?highlight=subway
Eu utilizo apenas o GetTouch[0] e o resto eu ignoro, afinal, só estou querendo saber sobre o toque de um dedo.
ai tentei 1 mas vou tentar esse
niao- Avançado
- PONTOS : 2994
REPUTAÇÃO : 17
Respeito as regras :
Tópicos semelhantes
» Botoes da unity no android e destruir um objeto em qualquer lugar da cena com touch
» [DÚVIDA] Sobre configurações de Touch para jogos Android
» [DUVIDA] Tiro com botao touch android!!
» [TUTORIAL] Camera orbital para android (TOUCH)
» Como simular a tecla "E" em um botão touch no android?
» [DÚVIDA] Sobre configurações de Touch para jogos Android
» [DUVIDA] Tiro com botao touch android!!
» [TUTORIAL] Camera orbital para android (TOUCH)
» Como simular a tecla "E" em um botão touch no android?
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos