Duvida na movimentação com o touch
2 participantes
Página 1 de 1
Duvida na movimentação com o touch
Galera estou fazendo um infinite runner com a movimentação so para os lados como eu uso o Well Collider o meu eixo Z(azul) está para frente.
O problema está sendo que quando eu vou para o lado direito ou esquerdo o valor em Z muda e meu carro para no cenario e não anda mais.
Segue meu script estou testando com o mouse mas é a mesma coisa.
O problema está sendo que quando eu vou para o lado direito ou esquerdo o valor em Z muda e meu carro para no cenario e não anda mais.
Segue meu script estou testando com o mouse mas é a mesma coisa.
- Código:
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
[RequireComponent(typeof(Rigidbody))]
public class VeiculoSimples : MonoBehaviour {
public Transform[] MeshRodas;
public WheelCollider[] ColisorRodas;
public float Torque = 1000, pesoVeiculo=1500;
private Rigidbody corpoRigido;
public float velocidade;
private float velMaxima;
private float Tempodepista;
private int pontuacao ;
public float RecordePista;
private float timer = 0;
public Text Tempo;
public Text Pontos;
public Text NovoRecorde;
public Text Recorde;
public RectTransform Panel;
public RectTransform Trofeu;
public bool Fimdejogo;
public bool jogoPausado;
private float ponteiroX, ponteiroY;
float lerpTime;
float currentLertTime;
float perc = 1;
private bool podeMover;
Vector3 startPos;
Vector3 endPos;
float VelocidadeDoCarro;
bool firstInput;
//teste
private bool temParedeFrente;
void Start () {
corpoRigido = GetComponent<Rigidbody> ();
corpoRigido.mass = pesoVeiculo;
velocidade = 5f;
velMaxima = 30;
Tempodepista = 0;
pontuacao = 0;
RecordePista = 100f;
Fimdejogo = false;
jogoPausado = false;
}
// Update is called once per frame
void Update () {
//Detectar Movimentos
ponteiroX = ponteiroY = 0;
if (Input.GetMouseButton (0))
{
if (perc == 1)
{
lerpTime = 100;
currentLertTime = 2;
firstInput = true;
}
ponteiroX = Input.GetAxis ("Mouse X");
//ponteiroY = Input.GetAxis ("Mouse Y");
}
else {
podeMover = true;
}
startPos = gameObject.transform.position;
if (Input.touchCount > 1)
{
ponteiroX = Input.touches [0].deltaPosition.x;
//ponteiroY = Input.touches [0].deltaPosition.x;
}
if (ponteiroX > 0 && podeMover == true)
{
endPos= new Vector3 (transform.position.x, transform.position.y, transform.position.z-2);
podeMover = false;
}
if (ponteiroX < 0 && podeMover == true)
{
endPos= new Vector3 (transform.position.x, transform.position.y, transform.position.z+2);
podeMover = false;
}
if (firstInput == true)
{
currentLertTime += Time.deltaTime * 5;
perc = currentLertTime * lerpTime;
gameObject.transform.position = Vector3.Lerp (transform.position,endPos,perc);
}
}
void FixedUpdate(){
ColisorRodas [0].motorTorque = Input.GetAxis ("Vertical") * Torque;
ColisorRodas [1].motorTorque = Input.GetAxis ("Vertical") * Torque;
ColisorRodas [2].motorTorque = Input.GetAxis ("Vertical") * Torque;
ColisorRodas [3].motorTorque = Input.GetAxis ("Vertical") * Torque;
for (int i = 0; i < ColisorRodas.Length; i++) {
Quaternion quat;
Vector3 pos;
ColisorRodas [i].GetWorldPose (out pos, out quat);
MeshRodas [i].position = pos;
MeshRodas [i].rotation = quat;
}
}
jeffersonveloso- Iniciante
- PONTOS : 3120
REPUTAÇÃO : 0
Respeito as regras :
Re: Duvida na movimentação com o touch
Você está mechendo o personagem em Z? não pode cara, a wheelCollider foi feita para andar para frente (ou seja, no eixo Z)
Mas eu andei reparando que você está utilizando wheelCollider mas está "teleportando" o carro para uma posição a mais ou a menos... Cara, eu não faria isto.
Se você quer apenas que o veículo ande para frente e troque de pistas, não use wheels, por que elas vão dar trilhões de problemas, principalmente nas colisões.
Mas eu andei reparando que você está utilizando wheelCollider mas está "teleportando" o carro para uma posição a mais ou a menos... Cara, eu não faria isto.
Se você quer apenas que o veículo ande para frente e troque de pistas, não use wheels, por que elas vão dar trilhões de problemas, principalmente nas colisões.
Re: Duvida na movimentação com o touch
Mas eu preciso dar a impressao pro usuario q a roda do carrinho gira, e esse movimento sem o touch funciona, so esta dando pau com o touch.
Usar o sphere collider seria uma opção melhor?
Usar o sphere collider seria uma opção melhor?
jeffersonveloso- Iniciante
- PONTOS : 3120
REPUTAÇÃO : 0
Respeito as regras :
Re: Duvida na movimentação com o touch
Serio mesmo que meu post está sendo ignorado?
jeffersonveloso- Iniciante
- PONTOS : 3120
REPUTAÇÃO : 0
Respeito as regras :
Re: Duvida na movimentação com o touch
Ignorado? nuss, só agora que tive tempo de ver os posts... Tenho faculdade durante a semana .-.
Enfim, Este seu sistema está muito estranho, eu faria com qualquer outra coisa que não seja WheelCollider, para evitar MUITOS E MUITOS bugs...
A roda girando você pode fazer com um simples transform.rotation*velocidade, não há necessidade de deixar o jogo mais pesado calculando as físicas das rodas.
Enfim, Este seu sistema está muito estranho, eu faria com qualquer outra coisa que não seja WheelCollider, para evitar MUITOS E MUITOS bugs...
A roda girando você pode fazer com um simples transform.rotation*velocidade, não há necessidade de deixar o jogo mais pesado calculando as físicas das rodas.
Re: Duvida na movimentação com o touch
KKK só quis dar um drama, estou precisando de uma ajuda urgente, tbm é trabalho para a faculdade, não estou usando mais physics para mover as rodas e mesmo assim o carro parou de andar quando movo ele para os lados.
jeffersonveloso- Iniciante
- PONTOS : 3120
REPUTAÇÃO : 0
Respeito as regras :
Re: Duvida na movimentação com o touch
Já deu uma olhada neste tutorial?
https://www.schultzgames.com/t1156-tutorial-mover-personagem-com-touch-no-estilo-subway-surfers#6693
É uma implementação simples para um jogo estilo subway... e para girar as rodas basta usar o Rotate
https://www.schultzgames.com/t1156-tutorial-mover-personagem-com-touch-no-estilo-subway-surfers#6693
É uma implementação simples para um jogo estilo subway... e para girar as rodas basta usar o Rotate
Re: Duvida na movimentação com o touch
Sim Marcos dei uma olhada, meu personagem se move para frente no eixo x e de um lado para o outro no eixo Z isso seria o correto ? Lá no script vc deixa bem claro q tem q se mover para frente no eixo Z.
Última edição por jeffersonveloso em Ter Jun 28, 2016 10:30 am, editado 1 vez(es)
jeffersonveloso- Iniciante
- PONTOS : 3120
REPUTAÇÃO : 0
Respeito as regras :
Re: Duvida na movimentação com o touch
Com o script que está lá, o objeto vai se mover no eixo Z (global) e ir para os lados no eixo X(global)
Não sei como está a sua cena... seria interessante mandar uma print
Não sei como está a sua cena... seria interessante mandar uma print
Re: Duvida na movimentação com o touch
Segue as prints de como o modelo está na cena,
https://2img.net/r/ihimg/a/img923/6618/UY2VWw.png
https://2img.net/r/ihimg/a/img924/2439/rsHOUK.png
https://2img.net/r/ihimg/a/img923/6618/UY2VWw.png
https://2img.net/r/ihimg/a/img924/2439/rsHOUK.png
jeffersonveloso- Iniciante
- PONTOS : 3120
REPUTAÇÃO : 0
Respeito as regras :
Re: Duvida na movimentação com o touch
Mas o seu objeto esta invertido... o pivot dele esta errado.
O eixo Z deve apontar para ferente do veiculo. Voce pode corrigir isto girando os objetos internos ou jogando o objeto dentro de um outro objeto vazio e deixando a rotação correta.
O eixo Z deve apontar para ferente do veiculo. Voce pode corrigir isto girando os objetos internos ou jogando o objeto dentro de um outro objeto vazio e deixando a rotação correta.
Tópicos semelhantes
» [Dúvida] Movimentação com touch
» Setas para movimentação com touch
» Controle Analógico de movimentação para Jogos touch
» Como faço para limitar a movimentação (Touch) de um personagem a 3 pontos específicos? Unity C#
» Duvida touch mobile
» Setas para movimentação com touch
» Controle Analógico de movimentação para Jogos touch
» Como faço para limitar a movimentação (Touch) de um personagem a 3 pontos específicos? Unity C#
» Duvida touch mobile
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos