[RESOLVIDO] problema movimentação horinzontal
2 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] problema movimentação horinzontal
axisH = Input.GetAxisRaw("Horizontal"); sempre é 1 como resolver esse problema?
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace TMGS.ferias.personagem
{
public class PlayerPrincipal : Personagem
{
// atributo que define qual animação tocar
private float BlendDeControleMovimentacao = 0f;
void Update()
{
///<summary>
///atributos que pegam a referencia do toque nas setas horizontais e verticais
/// </summary>
axisH = Input.GetAxisRaw("Horizontal");
axisV = Input.GetAxisRaw("Vertical");
///<summary>
///atributo que checa a movimentação das setas V.H
/// </summary>
andandoHorizontal = Mathf.Abs(axisH) > 0f;
andandoVertical = Mathf.Abs(axisV) > 0f;
//função que controla as animaçoes
executaAnim(BlendDeControleMovimentacao);
}
private void FixedUpdate()
{
//função que controla a movimentação
Movimentacao();
}
/// <summary>
///metodo que faz os testes para saber em que direção o payer andar e dar a referencia diretamente
///ao metodoque controla as animações
/// </summary>
public override void Movimentacao()
{
if (andandoHorizontal || andandoVertical)
{
if (axisH > 0f && andandoVertical == false)
{
rd.velocity = new Vector2(Personagem.velocidade, rd.velocity.y);
BlendDeControleMovimentacao = 4f;
}
else if (axisH < 0f && andandoVertical == false)
{
rd.velocity = new Vector2(-Personagem.velocidade, rd.velocity.y);
BlendDeControleMovimentacao = 3f;
}
else if (axisV > 0f && andandoHorizontal == false)
{
rd.velocity = new Vector2(rd.velocity.x, Personagem.velocidade);
BlendDeControleMovimentacao = 1f;
}
else if (axisV < 0f && andandoHorizontal == false)
{
rd.velocity = new Vector2(rd.velocity.x, -Personagem.velocidade);
BlendDeControleMovimentacao = 2f;
}
else if (axisV > 0f && axisH > 0f)
{
rd.velocity = new Vector2(Personagem.velocidade, Personagem.velocidade);
BlendDeControleMovimentacao = 6f;
}
else if (axisV > 0f && axisH < 0f)
{
rd.velocity = new Vector2(-Personagem.velocidade, Personagem.velocidade);
BlendDeControleMovimentacao = 5f;
}
else if (axisV < 0f && axisH > 0f)
{
rd.velocity = new Vector2(Personagem.velocidade, -Personagem.velocidade);
BlendDeControleMovimentacao = 8f;
}
else if (axisV < 0f && axisH < 0f)
{
rd.velocity = new Vector2(-Personagem.velocidade, -Personagem.velocidade);
BlendDeControleMovimentacao = 7f;
}
}
}
/// <summary>
/// metodo que controla o disparo de animações
/// </summary>
private void executaAnim(float dados)
{
if (andandoHorizontal || andandoVertical)
{
an.SetBool("andar",true);
an.SetFloat("Blend", dados);
}
else if(!andandoHorizontal || !andandoVertical)
{
an.SetBool("andar", false);
}
}
}
}
Última edição por dstaroski em Seg Ago 13, 2018 8:48 am, editado 1 vez(es) (Motivo da edição : Resolvido)
lelouchsdky- Avançado
- PONTOS : 2968
REPUTAÇÃO : 21
Áreas de atuação : Cursando Licenciatura em computação
Respeito as regras :
Re: [RESOLVIDO] problema movimentação horinzontal
lelouchsdky escreveu:axisH = Input.GetAxisRaw("Horizontal"); sempre é 1 como resolver esse problema?
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace TMGS.ferias.personagem
{
public class PlayerPrincipal : Personagem
{
// atributo que define qual animação tocar
private float BlendDeControleMovimentacao = 0f;
void Update()
{
///<summary>
///atributos que pegam a referencia do toque nas setas horizontais e verticais
/// </summary>
axisH = Input.GetAxisRaw("Horizontal");
axisV = Input.GetAxisRaw("Vertical");
///<summary>
///atributo que checa a movimentação das setas V.H
/// </summary>
andandoHorizontal = Mathf.Abs(axisH) > 0f;
andandoVertical = Mathf.Abs(axisV) > 0f;
//função que controla as animaçoes
executaAnim(BlendDeControleMovimentacao);
}
private void FixedUpdate()
{
//função que controla a movimentação
Movimentacao();
}
/// <summary>
///metodo que faz os testes para saber em que direção o payer andar e dar a referencia diretamente
///ao metodoque controla as animações
/// </summary>
public override void Movimentacao()
{
if (andandoHorizontal || andandoVertical)
{
if (axisH > 0f && andandoVertical == false)
{
rd.velocity = new Vector2(Personagem.velocidade, rd.velocity.y);
BlendDeControleMovimentacao = 4f;
}
else if (axisH < 0f && andandoVertical == false)
{
rd.velocity = new Vector2(-Personagem.velocidade, rd.velocity.y);
BlendDeControleMovimentacao = 3f;
}
else if (axisV > 0f && andandoHorizontal == false)
{
rd.velocity = new Vector2(rd.velocity.x, Personagem.velocidade);
BlendDeControleMovimentacao = 1f;
}
else if (axisV < 0f && andandoHorizontal == false)
{
rd.velocity = new Vector2(rd.velocity.x, -Personagem.velocidade);
BlendDeControleMovimentacao = 2f;
}
else if (axisV > 0f && axisH > 0f)
{
rd.velocity = new Vector2(Personagem.velocidade, Personagem.velocidade);
BlendDeControleMovimentacao = 6f;
}
else if (axisV > 0f && axisH < 0f)
{
rd.velocity = new Vector2(-Personagem.velocidade, Personagem.velocidade);
BlendDeControleMovimentacao = 5f;
}
else if (axisV < 0f && axisH > 0f)
{
rd.velocity = new Vector2(Personagem.velocidade, -Personagem.velocidade);
BlendDeControleMovimentacao = 8f;
}
else if (axisV < 0f && axisH < 0f)
{
rd.velocity = new Vector2(-Personagem.velocidade, -Personagem.velocidade);
BlendDeControleMovimentacao = 7f;
}
}
}
/// <summary>
/// metodo que controla o disparo de animações
/// </summary>
private void executaAnim(float dados)
{
if (andandoHorizontal || andandoVertical)
{
an.SetBool("andar",true);
an.SetFloat("Blend", dados);
}
else if(!andandoHorizontal || !andandoVertical)
{
an.SetBool("andar", false);
}
}
}
}
Tenta sem o "Raw", deixa somente o Input.GetAxis("Horizontal");
axisH = Input.GetAxis("Horizontal")
Re: [RESOLVIDO] problema movimentação horinzontal
NotoriousDev escreveu:lelouchsdky escreveu:axisH = Input.GetAxisRaw("Horizontal"); sempre é 1 como resolver esse problema?
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace TMGS.ferias.personagem
{
public class PlayerPrincipal : Personagem
{
// atributo que define qual animação tocar
private float BlendDeControleMovimentacao = 0f;
void Update()
{
///<summary>
///atributos que pegam a referencia do toque nas setas horizontais e verticais
/// </summary>
axisH = Input.GetAxisRaw("Horizontal");
axisV = Input.GetAxisRaw("Vertical");
///<summary>
///atributo que checa a movimentação das setas V.H
/// </summary>
andandoHorizontal = Mathf.Abs(axisH) > 0f;
andandoVertical = Mathf.Abs(axisV) > 0f;
//função que controla as animaçoes
executaAnim(BlendDeControleMovimentacao);
}
private void FixedUpdate()
{
//função que controla a movimentação
Movimentacao();
}
/// <summary>
///metodo que faz os testes para saber em que direção o payer andar e dar a referencia diretamente
///ao metodoque controla as animações
/// </summary>
public override void Movimentacao()
{
if (andandoHorizontal || andandoVertical)
{
if (axisH > 0f && andandoVertical == false)
{
rd.velocity = new Vector2(Personagem.velocidade, rd.velocity.y);
BlendDeControleMovimentacao = 4f;
}
else if (axisH < 0f && andandoVertical == false)
{
rd.velocity = new Vector2(-Personagem.velocidade, rd.velocity.y);
BlendDeControleMovimentacao = 3f;
}
else if (axisV > 0f && andandoHorizontal == false)
{
rd.velocity = new Vector2(rd.velocity.x, Personagem.velocidade);
BlendDeControleMovimentacao = 1f;
}
else if (axisV < 0f && andandoHorizontal == false)
{
rd.velocity = new Vector2(rd.velocity.x, -Personagem.velocidade);
BlendDeControleMovimentacao = 2f;
}
else if (axisV > 0f && axisH > 0f)
{
rd.velocity = new Vector2(Personagem.velocidade, Personagem.velocidade);
BlendDeControleMovimentacao = 6f;
}
else if (axisV > 0f && axisH < 0f)
{
rd.velocity = new Vector2(-Personagem.velocidade, Personagem.velocidade);
BlendDeControleMovimentacao = 5f;
}
else if (axisV < 0f && axisH > 0f)
{
rd.velocity = new Vector2(Personagem.velocidade, -Personagem.velocidade);
BlendDeControleMovimentacao = 8f;
}
else if (axisV < 0f && axisH < 0f)
{
rd.velocity = new Vector2(-Personagem.velocidade, -Personagem.velocidade);
BlendDeControleMovimentacao = 7f;
}
}
}
/// <summary>
/// metodo que controla o disparo de animações
/// </summary>
private void executaAnim(float dados)
{
if (andandoHorizontal || andandoVertical)
{
an.SetBool("andar",true);
an.SetFloat("Blend", dados);
}
else if(!andandoHorizontal || !andandoVertical)
{
an.SetBool("andar", false);
}
}
}
}
Tenta sem o "Raw", deixa somente o Input.GetAxis("Horizontal");
axisH = Input.GetAxis("Horizontal")
Já tentei e não funcionou
lelouchsdky- Avançado
- PONTOS : 2968
REPUTAÇÃO : 21
Áreas de atuação : Cursando Licenciatura em computação
Respeito as regras :
Re: [RESOLVIDO] problema movimentação horinzontal
lelouchsdky escreveu:NotoriousDev escreveu:lelouchsdky escreveu:axisH = Input.GetAxisRaw("Horizontal"); sempre é 1 como resolver esse problema?
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace TMGS.ferias.personagem
{
public class PlayerPrincipal : Personagem
{
// atributo que define qual animação tocar
private float BlendDeControleMovimentacao = 0f;
void Update()
{
///<summary>
///atributos que pegam a referencia do toque nas setas horizontais e verticais
/// </summary>
axisH = Input.GetAxisRaw("Horizontal");
axisV = Input.GetAxisRaw("Vertical");
///<summary>
///atributo que checa a movimentação das setas V.H
/// </summary>
andandoHorizontal = Mathf.Abs(axisH) > 0f;
andandoVertical = Mathf.Abs(axisV) > 0f;
//função que controla as animaçoes
executaAnim(BlendDeControleMovimentacao);
}
private void FixedUpdate()
{
//função que controla a movimentação
Movimentacao();
}
/// <summary>
///metodo que faz os testes para saber em que direção o payer andar e dar a referencia diretamente
///ao metodoque controla as animações
/// </summary>
public override void Movimentacao()
{
if (andandoHorizontal || andandoVertical)
{
if (axisH > 0f && andandoVertical == false)
{
rd.velocity = new Vector2(Personagem.velocidade, rd.velocity.y);
BlendDeControleMovimentacao = 4f;
}
else if (axisH < 0f && andandoVertical == false)
{
rd.velocity = new Vector2(-Personagem.velocidade, rd.velocity.y);
BlendDeControleMovimentacao = 3f;
}
else if (axisV > 0f && andandoHorizontal == false)
{
rd.velocity = new Vector2(rd.velocity.x, Personagem.velocidade);
BlendDeControleMovimentacao = 1f;
}
else if (axisV < 0f && andandoHorizontal == false)
{
rd.velocity = new Vector2(rd.velocity.x, -Personagem.velocidade);
BlendDeControleMovimentacao = 2f;
}
else if (axisV > 0f && axisH > 0f)
{
rd.velocity = new Vector2(Personagem.velocidade, Personagem.velocidade);
BlendDeControleMovimentacao = 6f;
}
else if (axisV > 0f && axisH < 0f)
{
rd.velocity = new Vector2(-Personagem.velocidade, Personagem.velocidade);
BlendDeControleMovimentacao = 5f;
}
else if (axisV < 0f && axisH > 0f)
{
rd.velocity = new Vector2(Personagem.velocidade, -Personagem.velocidade);
BlendDeControleMovimentacao = 8f;
}
else if (axisV < 0f && axisH < 0f)
{
rd.velocity = new Vector2(-Personagem.velocidade, -Personagem.velocidade);
BlendDeControleMovimentacao = 7f;
}
}
}
/// <summary>
/// metodo que controla o disparo de animações
/// </summary>
private void executaAnim(float dados)
{
if (andandoHorizontal || andandoVertical)
{
an.SetBool("andar",true);
an.SetFloat("Blend", dados);
}
else if(!andandoHorizontal || !andandoVertical)
{
an.SetBool("andar", false);
}
}
}
}
Tenta sem o "Raw", deixa somente o Input.GetAxis("Horizontal");
axisH = Input.GetAxis("Horizontal")
Já tentei e não funcionou
Manda print das configurações de input do eixo Horizontal. E uma questão, o Vertical está a funcionar normalmente?
Re: [RESOLVIDO] problema movimentação horinzontal
O eixo Vertical funciona normalmente
lelouchsdky- Avançado
- PONTOS : 2968
REPUTAÇÃO : 21
Áreas de atuação : Cursando Licenciatura em computação
Respeito as regras :
Re: [RESOLVIDO] problema movimentação horinzontal
lelouchsdky escreveu:O eixo Vertical funciona normalmente
Então verifica as configurações do Input em Edit > Project Settings > Input
De uma vista e compara com o Vertical para ver se estão iguais...
Enquanto isso vou ler seu código que estou tentando ajudar sem nem procurar entender o que queres fazer...
Re: [RESOLVIDO] problema movimentação horinzontal
NotoriousDev escreveu:lelouchsdky escreveu:O eixo Vertical funciona normalmente
Então verifica as configurações do Input em Edit > Project Settings > Input
De uma vista e compara com o Vertical para ver se estão iguais...
Enquanto isso vou ler seu código que estou tentando ajudar sem nem procurar entender o que queres fazer...
Ok, os eixos estão iguais, ja refiz o projeto e sempre dar a mesma coisa, o Horizontal sempre estar setado
lelouchsdky- Avançado
- PONTOS : 2968
REPUTAÇÃO : 21
Áreas de atuação : Cursando Licenciatura em computação
Respeito as regras :
Re: [RESOLVIDO] problema movimentação horinzontal
MEU DEUS !!!!! era meu controle encostei ele em um lugar e ficou setado só em um ladoNotoriousDev escreveu:Tem algum Comando/Controle ligado ao pc?
VLW mano
lelouchsdky- Avançado
- PONTOS : 2968
REPUTAÇÃO : 21
Áreas de atuação : Cursando Licenciatura em computação
Respeito as regras :
Re: [RESOLVIDO] problema movimentação horinzontal
lelouchsdky escreveu:MEU DEUS !!!!! era meu controle encostei ele em um lugar e ficou setado só em um ladoNotoriousDev escreveu:Tem algum Comando/Controle ligado ao pc?
VLW mano
kkkkkkkkkkkkkkk acontece mano.. fico feliz que tenha conseguido...
Tópicos semelhantes
» [RESOLVIDO] Problema com movimentação do Joystick
» [RESOLVIDO]Script de movimentação, problema para trocar de animação
» [RESOLVIDO] Duvida com movimentação
» [RESOLVIDO] Movimentação 2D
» [RESOLVIDO] movimentação FPS COM ERRO
» [RESOLVIDO]Script de movimentação, problema para trocar de animação
» [RESOLVIDO] Duvida com movimentação
» [RESOLVIDO] Movimentação 2D
» [RESOLVIDO] movimentação FPS COM ERRO
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos