(DÚVIDA) Erro Touch Screen
3 participantes
Página 1 de 1
(DÚVIDA) Erro Touch Screen
Bom pessoal estou tendo um problema para adicionar o sistema de mover (Esquerda - Direita) com toque para Android.
Adiciono os seguintes Scripts...
(PRIMEIRO SCRIPT)
#pragma strict
static var Direito = false;
function Start () {
}
function Update () {
for(var i:int =0; i < Input.touches.Length; i++){ // quantos toques voce tem ??
var touch:Touch=Input.touches[i]; //o toque
var ray = Camera.main.ScreenPointToRay (Input.GetTouch(i).position);
var hit:RaycastHit =new RaycastHit ();
if(Physics.Raycast(ray,hit,1000)){
if(hit.collider.gameObject ==this.gameObject){
switch (touch.phase) {
case TouchPhase.Began: // se o toque começar
Direito = true;
break;
case TouchPhase.Ended: // se o toque começar
Direito = false;
break;
}
}
}
}
}
(SEGUNDO SCRIPT)
#pragma strict
static var Left = false;
function Start () {
}
function Update () {
for(var i:int =0; i < Input.touches.Length; i++){ // quantos toques voce tem ??
var touch:Touch=Input.touches[i]; //o toque
var ray = Camera.main.ScreenPointToRay (Input.GetTouch(i).position);
var hit:RaycastHit =new RaycastHit ();
if(Physics.Raycast(ray,hit,1000)){
if(hit.collider.gameObject ==this.gameObject){
switch (touch.phase) {
case TouchPhase.Began: // se o toque começar
Left = true;
break;
case TouchPhase.Ended: // se o toque começar
Left = false;
break;
}
}
}
}
}
(TERCEIRO SCRIPT)
function Update () {
if(transform.position.x<=48.5){
if(Input.GetKey("right")||Botao_Direito.Direito==true){
transform.Translate(vel*Time.deltaTime,0,0);
}
}
if(transform.position.x>=-35.5){
if(Input.GetKey("left")||Esquerdo_Botao.Left==true){
transform.Translate(vel*Time.deltaTime*-1,0,0);
}
}
(ESSE TERCEIRO, DEI UMA ABREVIADA E SÓ PEGUEI A PARTE IMPORTANTE)
Eles ate funciona, mas as vezes da um erro ou um conflito, exemplo, eu coloco para a direita e anda direto e fica travado, e quando aperto para outro lado não funciona por um curto tempo.
Adiciono os seguintes Scripts...
(PRIMEIRO SCRIPT)
#pragma strict
static var Direito = false;
function Start () {
}
function Update () {
for(var i:int =0; i < Input.touches.Length; i++){ // quantos toques voce tem ??
var touch:Touch=Input.touches[i]; //o toque
var ray = Camera.main.ScreenPointToRay (Input.GetTouch(i).position);
var hit:RaycastHit =new RaycastHit ();
if(Physics.Raycast(ray,hit,1000)){
if(hit.collider.gameObject ==this.gameObject){
switch (touch.phase) {
case TouchPhase.Began: // se o toque começar
Direito = true;
break;
case TouchPhase.Ended: // se o toque começar
Direito = false;
break;
}
}
}
}
}
(SEGUNDO SCRIPT)
#pragma strict
static var Left = false;
function Start () {
}
function Update () {
for(var i:int =0; i < Input.touches.Length; i++){ // quantos toques voce tem ??
var touch:Touch=Input.touches[i]; //o toque
var ray = Camera.main.ScreenPointToRay (Input.GetTouch(i).position);
var hit:RaycastHit =new RaycastHit ();
if(Physics.Raycast(ray,hit,1000)){
if(hit.collider.gameObject ==this.gameObject){
switch (touch.phase) {
case TouchPhase.Began: // se o toque começar
Left = true;
break;
case TouchPhase.Ended: // se o toque começar
Left = false;
break;
}
}
}
}
}
(TERCEIRO SCRIPT)
function Update () {
if(transform.position.x<=48.5){
if(Input.GetKey("right")||Botao_Direito.Direito==true){
transform.Translate(vel*Time.deltaTime,0,0);
}
}
if(transform.position.x>=-35.5){
if(Input.GetKey("left")||Esquerdo_Botao.Left==true){
transform.Translate(vel*Time.deltaTime*-1,0,0);
}
}
(ESSE TERCEIRO, DEI UMA ABREVIADA E SÓ PEGUEI A PARTE IMPORTANTE)
Eles ate funciona, mas as vezes da um erro ou um conflito, exemplo, eu coloco para a direita e anda direto e fica travado, e quando aperto para outro lado não funciona por um curto tempo.
matsuismael- Membro
- PONTOS : 3153
REPUTAÇÃO : 0
Respeito as regras :
Re: (DÚVIDA) Erro Touch Screen
Outra coisa interessante que esqueci de comenta,
Quando trava para o lado direito, eu aperto 3 vezes rápido e destrava.
e para a esquerda a mesma coisa.
Quando trava para o lado direito, eu aperto 3 vezes rápido e destrava.
e para a esquerda a mesma coisa.
matsuismael- Membro
- PONTOS : 3153
REPUTAÇÃO : 0
Respeito as regras :
Re: (DÚVIDA) Erro Touch Screen
Passei para C#
O problema ainda continua, mas com menas frequência
(Primeiro Script)
using UnityEngine;
using System.Collections;
public class PlayerC : MonoBehaviour {
static public float vel;
// Use this for initialization
void Start () {
vel = 50; }
// Update is called once per frame
void Update () {
if (transform.position.x <= 55.5)
{
if (Input.GetButton("d")||B_Direita.Direita==true){
transform.Translate(vel * Time.deltaTime, 0, 0);
}
}
if (transform.position.x >= -35.5)
{
if (Input.GetButton("a") || B_Esquerda.Esquerda == true)
{
transform.Translate(vel * Time.deltaTime * -1, 0, 0);
}
}
}
}
(Segundo Script)
using UnityEngine;
using System.Collections;
public class B_Direita : MonoBehaviour {
static public bool Direita = false;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
for (int i = 0; i < Input.touches.Length; i++)
{
Touch touch = Input.touches[i]; //o toque
Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(i).position);
RaycastHit hit = new RaycastHit();
if (Physics.Raycast(ray, out hit, 1000))
{
if (hit.collider.gameObject == this.gameObject)
{
switch (touch.phase)
{
case TouchPhase.Began:
Direita = true;
break;
case TouchPhase.Ended:
Direita = false;
break;
}
}
}
}
}
}
(Terceiro Script)
using UnityEngine;
using System.Collections;
public class B_Esquerda : MonoBehaviour {
static public bool Esquerda = false;
// Use this for initialization
void Start()
{
}
// Update is called once per frame
void Update()
{
for (int i = 0; i < Input.touches.Length; i++)
{
Touch touch = Input.touches[i]; //o toque
Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(i).position);
RaycastHit hit = new RaycastHit();
if (Physics.Raycast(ray, out hit, 1000))
{
if (hit.collider.gameObject == this.gameObject)
{
switch (touch.phase)
{
case TouchPhase.Began:
Esquerda = true;
break;
case TouchPhase.Ended:
Esquerda = false;
break;
}
}
}
}
}
}
O problema ainda continua, mas com menas frequência
(Primeiro Script)
using UnityEngine;
using System.Collections;
public class PlayerC : MonoBehaviour {
static public float vel;
// Use this for initialization
void Start () {
vel = 50; }
// Update is called once per frame
void Update () {
if (transform.position.x <= 55.5)
{
if (Input.GetButton("d")||B_Direita.Direita==true){
transform.Translate(vel * Time.deltaTime, 0, 0);
}
}
if (transform.position.x >= -35.5)
{
if (Input.GetButton("a") || B_Esquerda.Esquerda == true)
{
transform.Translate(vel * Time.deltaTime * -1, 0, 0);
}
}
}
}
(Segundo Script)
using UnityEngine;
using System.Collections;
public class B_Direita : MonoBehaviour {
static public bool Direita = false;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
for (int i = 0; i < Input.touches.Length; i++)
{
Touch touch = Input.touches[i]; //o toque
Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(i).position);
RaycastHit hit = new RaycastHit();
if (Physics.Raycast(ray, out hit, 1000))
{
if (hit.collider.gameObject == this.gameObject)
{
switch (touch.phase)
{
case TouchPhase.Began:
Direita = true;
break;
case TouchPhase.Ended:
Direita = false;
break;
}
}
}
}
}
}
(Terceiro Script)
using UnityEngine;
using System.Collections;
public class B_Esquerda : MonoBehaviour {
static public bool Esquerda = false;
// Use this for initialization
void Start()
{
}
// Update is called once per frame
void Update()
{
for (int i = 0; i < Input.touches.Length; i++)
{
Touch touch = Input.touches[i]; //o toque
Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(i).position);
RaycastHit hit = new RaycastHit();
if (Physics.Raycast(ray, out hit, 1000))
{
if (hit.collider.gameObject == this.gameObject)
{
switch (touch.phase)
{
case TouchPhase.Began:
Esquerda = true;
break;
case TouchPhase.Ended:
Esquerda = false;
break;
}
}
}
}
}
}
matsuismael- Membro
- PONTOS : 3153
REPUTAÇÃO : 0
Respeito as regras :
Re: (DÚVIDA) Erro Touch Screen
cara coloca pra se movimentar com as UI foi isso que vc fez?
é muuuuuuuuuuito mais fácil sem comparações... procura aqui no forum deve ter algo a respeito, é só vc adicionar um evenct trigiger no UI e escolher la a opção buton down ele começa a andar e quando for button up ele para de andar "simpres assim" :D
é muuuuuuuuuuito mais fácil sem comparações... procura aqui no forum deve ter algo a respeito, é só vc adicionar um evenct trigiger no UI e escolher la a opção buton down ele começa a andar e quando for button up ele para de andar "simpres assim" :D
Édipo- MembroAvançado
- PONTOS : 4009
REPUTAÇÃO : 62
Idade : 36
Respeito as regras :
Re: (DÚVIDA) Erro Touch Screen
Édipo escreveu:cara coloca pra se movimentar com as UI foi isso que vc fez?
é muuuuuuuuuuito mais fácil sem comparações... procura aqui no forum deve ter algo a respeito, é só vc adicionar um evenct trigiger no UI e escolher la a opção buton down ele começa a andar e quando for button up ele para de andar "simpres assim" :D
Na verdade sou novo no unity e to aprende aos poucos com tutoriais que vejo na net. E tentando desenvolver alguma coisa a parti dai. kkkkk
Dei uma procurada aki no forum e não entrei nada a respeito, talvez tenha deixado passa despercebido, vou da uma outra olhada, com mais
cuidado dessa vez.
matsuismael- Membro
- PONTOS : 3153
REPUTAÇÃO : 0
Respeito as regras :
Re: (DÚVIDA) Erro Touch Screen
utilize esse script pra substituir seus scripts de botoes:
Ai voce verifica se isPressed é true para cada um se for move.
Voce pode usar esse script para os 2 botoes.
Ai voce verifica se isPressed é true para cada um se for move.
Voce pode usar esse script para os 2 botoes.
- Código:
using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;
public class SimpleButtonHolder : MonoBehaviour,IPointerEnterHandler,IPointerExitHandler {
public bool isPressed = false;
public void OnPointerEnter(PointerEventData e){
isPressed = true;
}
public void OnPointerExit(PointerEventData e){
isPressed = false;
}
}
Re: (DÚVIDA) Erro Touch Screen
nesse video mostra como usar os UI
https://www.youtube.com/watch?v=52U-eCAeGSo
ai vc utiliza o script como o cara de cima disse, pinter down e outra pointer up, se for down vai ser verdadeiro a booleana, se for verdadeiro ele vai movimentar, quando o botão for UP ele vai mudar a boleana para falso e ele vai parar de andar.
https://www.youtube.com/watch?v=52U-eCAeGSo
ai vc utiliza o script como o cara de cima disse, pinter down e outra pointer up, se for down vai ser verdadeiro a booleana, se for verdadeiro ele vai movimentar, quando o botão for UP ele vai mudar a boleana para falso e ele vai parar de andar.
Édipo- MembroAvançado
- PONTOS : 4009
REPUTAÇÃO : 62
Idade : 36
Respeito as regras :
Re: (DÚVIDA) Erro Touch Screen
Fala ai blz, valeu pela resposta... Eu estava pesquisando aqui no fórum e encontrei uma igualzinha.Édipo escreveu:nesse video mostra como usar os UI
https://www.youtube.com/watch?v=52U-eCAeGSo
ai vc utiliza o script como o cara de cima disse, pinter down e outra pointer up, se for down vai ser verdadeiro a booleana, se for verdadeiro ele vai movimentar, quando o botão for UP ele vai mudar a boleana para falso e ele vai parar de andar.
O problema e que tenho 3 personagens (Naves) e uso um sistema para gerenciar o personagem escolhido, quando tento utilizar uma dessas 3 naves nada funciona. Mas se coloca um objeto (Cubo) novo na cena, funciona com perfeição kkkkk
vou tenta agora o que nosso amigo Manawydan comentou, se de certo ou errado, venho aqui comentar =D
matsuismael- Membro
- PONTOS : 3153
REPUTAÇÃO : 0
Respeito as regras :
Re: (DÚVIDA) Erro Touch Screen
Consegui entender..Édipo escreveu:nesse video mostra como usar os UI
https://www.youtube.com/watch?v=52U-eCAeGSo
ai vc utiliza o script como o cara de cima disse, pinter down e outra pointer up, se for down vai ser verdadeiro a booleana, se for verdadeiro ele vai movimentar, quando o botão for UP ele vai mudar a boleana para falso e ele vai parar de andar.
Eu coloco o Event Trigger o objeto chamado Player, mas quando aperto Play. ele e gerenciado o nome muda para Player(Clone). Enquanto o Play esta ativo, mudo o Event Trigger para Player(Clone) e funciona na boa. Mas quando saio do play, retorna a configuração anterior (Player)
to fudido para resolve isso kkkkkkkkkkkk
matsuismael- Membro
- PONTOS : 3153
REPUTAÇÃO : 0
Respeito as regras :
Re: (DÚVIDA) Erro Touch Screen
e eu não estou entendendo :D
se cria um player com nome de clone é pq ja tem um na cena, tenta colocar pra deletar um pra ver se o outro fica com o nome normal
se cria um player com nome de clone é pq ja tem um na cena, tenta colocar pra deletar um pra ver se o outro fica com o nome normal
Édipo- MembroAvançado
- PONTOS : 4009
REPUTAÇÃO : 62
Idade : 36
Respeito as regras :
Re: (DÚVIDA) Erro Touch Screen
Inicialmente pensei a mesma coisa.Édipo escreveu:e eu não estou entendendo :D
se cria um player com nome de clone é pq ja tem um na cena, tenta colocar pra deletar um pra ver se o outro fica com o nome normal
Mas não... Vou explicar...
Tenho um objeto em cena (X), chamado GeradorNave. Com o seguinte script
#pragma strict
var nave1: Transform;
var nave2: Transform;
var nave3: Transform;
function Start () {
if(Select_Nave.playerS==1){
Instantiate(nave1,transform.position,transform.rotation);
}
if(Select_Nave.playerS==2){
Instantiate(nave2,transform.position,transform.rotation);
}
if(Select_Nave.playerS==3){
Instantiate(nave3,transform.position,transform.rotation);
}
}
function Update () {
}
Em uma outra cena (Y) tem 3 naves para selecionar.
Ao escolher uma nave, o jogo inicia (Na cena X) e vai com a nave escolhida.
Esse objeto (GeradorNave) cria uma nave na cena (Não existe nem uma nave ate então), e essa nave criada recebe o nome de Player(Clone).
matsuismael- Membro
- PONTOS : 3153
REPUTAÇÃO : 0
Respeito as regras :
Re: (DÚVIDA) Erro Touch Screen
estranho, vc diz que quando vc aperta no botão UI ele não faz nada enquanto o plater tem o clone no nome, ai quando vc tira ele resolve funcionar é isso? uai se for tenta fazer de outra forma, talvez vc esteja linkando na trigger o outro player sem o nome clone, tenta colocar o script em outro objeto que não irá mudar de nome, linkar ele na trigger e vê se funciona. acho que talvez seja isso sei la , mas tenta ai vai que cola, se não der vc me fala que eu vou pensar em outra coisa :D
Édipo- MembroAvançado
- PONTOS : 4009
REPUTAÇÃO : 62
Idade : 36
Respeito as regras :
Re: (DÚVIDA) Erro Touch Screen
Meio que ja fiz isso kkk...
Quando mudo o nome do Player(Clone) para Player, não funciona, quando eu linko ele "Player(Clone)" no trigger funciona na boa.
Mas o Player(Clone) só existe quando o play estive ativo, apos o play for desligado ele some.
Ja tentei pega o Player(Clone) e colocar na pasta Prefab e linkar, ele no trigger, so que tambem não funciona.
Deixa queto, desistir de usa esse método, acho que nem e possível kkkk, peguei um script do nosso amigo Marco que ficou bem funcional. Mas valeu mesmo, estou aprendendo bastante coisa aqui no fórum.
Quando mudo o nome do Player(Clone) para Player, não funciona, quando eu linko ele "Player(Clone)" no trigger funciona na boa.
Mas o Player(Clone) só existe quando o play estive ativo, apos o play for desligado ele some.
Ja tentei pega o Player(Clone) e colocar na pasta Prefab e linkar, ele no trigger, so que tambem não funciona.
Deixa queto, desistir de usa esse método, acho que nem e possível kkkk, peguei um script do nosso amigo Marco que ficou bem funcional. Mas valeu mesmo, estou aprendendo bastante coisa aqui no fórum.
matsuismael- Membro
- PONTOS : 3153
REPUTAÇÃO : 0
Respeito as regras :
Tópicos semelhantes
» [Dúvida] Movimentação com touch
» Erro no touch.
» Erro ao toca em um Button a parti de um touch
» Duvida na movimentação com o touch
» Duvida touch mobile
» Erro no touch.
» Erro ao toca em um Button a parti de um touch
» Duvida na movimentação com o touch
» Duvida touch mobile
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos