PERSONAGEM NN VAI PARA A DIREITA
3 participantes
Página 1 de 1
PERSONAGEM NN VAI PARA A DIREITA
Olá a todos, preciso de ajuda, estou fazendo o projeto Corrida Infinita para faculdade, o problema é; MEU JOGADOR COMEÇA NA PISTA DO MEIO, DO MEIO VAI PARA ESQUERDA, DA ESQUERDA PARA DIREITA TRANQUILAMENTE. O PROBLEMA É QUE NN VAI PARA A DIREITA. QUEM PUDER ME AJUDAR PFV.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[System.Serializable]
public enum SIDE { Left, Mid, Right }// direções no inspector
public class PlayerMovement : MonoBehaviour
{
public SIDE m_Side = SIDE.Mid;
float NewXPos = 0f;
public bool SwipeLeft;
public bool SwipeRight;
public float Xvalue; // Valor do eixo X, movimentar em três linhas, -2, 0, 2,
private CharacterController m_char;
// Start is called before the first frame update
void Start()
{
m_char = GetComponent<CharacterController>();
transform.position = Vector3.zero;
}
// Update is called once per frame
void Update()
{
SwipeLeft = Input.GetKeyDown(KeyCode.A) || Input.GetKeyDown(KeyCode.LeftArrow);
SwipeRight = Input.GetKeyDown(KeyCode.D) || Input.GetKeyDown(KeyCode.RightArrow);
if (SwipeLeft) // entrada para esquerda
{
if (m_Side == SIDE.Mid)
{
NewXPos = -Xvalue;
m_Side = SIDE.Left;
Debug.Log("Esquerda");
}
}
else if (m_Side == SIDE.Right)
{
NewXPos = 0;
m_Side = SIDE.Mid;
Debug.Log("Meio");
}
if (SwipeRight)// entrada para direita
if (m_Side == SIDE.Mid)
{
NewXPos = Xvalue;
m_Side = SIDE.Right;
Debug.Log("Direita");
}
else if (m_Side == SIDE.Left)
{
NewXPos = 0;
m_Side = SIDE.Mid;
Debug.Log("Meio");
}
m_char.Move((NewXPos - transform.position.x) * Vector3.right);
}
}
Gabriel M- Membro
- PONTOS : 1838
REPUTAÇÃO : 6
Respeito as regras :
Re: PERSONAGEM NN VAI PARA A DIREITA
Correção, DA ESQUERDA PARA O MEIO DA PISTA, ELE NN VAI PARA A DIREITA DE JEITO NENHUM
Gabriel M- Membro
- PONTOS : 1838
REPUTAÇÃO : 6
Respeito as regras :
Re: PERSONAGEM NN VAI PARA A DIREITA
Tu poderia reescrever o código dessa maneira, apesar de mais linha, é mais fácil de ler e mais fácil de encontrar bugs
- Código:
public SIDE m_Side = SIDE.Mid;
float NewXPos = 0f;
public float Xvalue; // Valor do eixo X, movimentar em três linhas, -2, 0, 2,
private CharacterController m_char;
// Start is called before the first frame update
void Start()
{
m_char = GetComponent<CharacterController>();
transform.position = Vector3.zero;
}
// Update is called once per frame
void Update()
{
bool SwipeLeft = Input.GetKeyDown(KeyCode.A) || Input.GetKeyDown(KeyCode.LeftArrow);
bool SwipeRight = Input.GetKeyDown(KeyCode.D) || Input.GetKeyDown(KeyCode.RightArrow);
switch (m_Side)
{
case SIDE.Mid:
if (SwipeLeft) {
NewXPos = -Xvalue;
m_Side = SIDE.Left;
Debug.Log("Meio");
}
if (SwipeRight) {
NewXPos = Xvalue;
m_Side = SIDE.Right;
Debug.Log("Meio");
}
break;
case SIDE.Right:
if (SwipeLeft) {
NewXPos = 0;
m_Side = SIDE.Mid;
Debug.Log("Direita");
}
break;
case SIDE.Left:
if (SwipeRight) {
NewXPos = 0;
m_Side = SIDE.Mid;
Debug.Log("Esquerda");
}
break;
}
m_char.Move((NewXPos - transform.position.x) * Vector3.right);
}
NKKF- ProgramadorMaster
- PONTOS : 4818
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: PERSONAGEM NN VAI PARA A DIREITA
Obgdo, dscp a demora agr que eu pude testar.
[list=linenums][*]if (SwipeRight)// entrada para direita
[*] if (m_Side == SIDE.Mid)
[*] {
[*] NewXPos = Xvalue;
[*] m_Side = SIDE.Right;
[*] Debug.Log("Direita");
[/list]
Acho que o problema esta nessa linha, pra esquerda e voltar para o meio ele faz isso, agora ir pra direita não esta indo
[list=linenums][*]if (SwipeRight)// entrada para direita
[*] if (m_Side == SIDE.Mid)
[*] {
[*] NewXPos = Xvalue;
[*] m_Side = SIDE.Right;
[*] Debug.Log("Direita");
[/list]
Acho que o problema esta nessa linha, pra esquerda e voltar para o meio ele faz isso, agora ir pra direita não esta indo
Gabriel M- Membro
- PONTOS : 1838
REPUTAÇÃO : 6
Respeito as regras :
Re: PERSONAGEM NN VAI PARA A DIREITA
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[System.Serializable]
public enum SIDE { Left, Mid, Right }// direções no inspector
public class PlayerMovement : MonoBehaviour
{
public SIDE m_Side = SIDE.Mid;
float NewXPos = 0f;
public bool SwipeLeft;
public bool SwipeRight;
public float Xvalue; // Valor do eixo X, movimentar em três linhas, -2, 0, 2,
private CharacterController m_char;
// Start is called before the first frame update
void Start()
{
m_char = GetComponent<CharacterController>();
transform.position = Vector3.zero;
}
// Update is called once per frame
void Update()
{
SwipeLeft = Input.GetKeyDown(KeyCode.A) || Input.GetKeyDown(KeyCode.LeftArrow);
SwipeRight = Input.GetKeyDown(KeyCode.D) || Input.GetKeyDown(KeyCode.RightArrow);
if (SwipeLeft) // entrada para esquerda
{
if (m_Side == SIDE.Mid)
{
NewXPos = -Xvalue;
m_Side = SIDE.Left;
Debug.Log("Esquerda");
}
else if (m_Side == SIDE.Right)
{
NewXPos = 0;
m_Side = SIDE.Mid;
Debug.Log("Meio");
}
}
if (SwipeRight)// entrada para direita
{
if (m_Side == SIDE.Mid)
{
NewXPos = Xvalue;
m_Side = SIDE.Right;
Debug.Log("Direita");
}
else if (m_Side == SIDE.Left)
{
NewXPos = 0;
m_Side = SIDE.Mid;
Debug.Log("Meio");
}
}
m_char.Move((NewXPos - transform.position.x) * Vector3.right);
}
}
Se todo o resto está funcionando, provavelmente isso faria funcionar corretamente. Os colchetes e o if estavam nos lugares errados pela lógica aplicada no script, pelo q entendi,,, Mas é melhor refazer o script usando switch msm.
Tópicos semelhantes
» fazer inimigo se movimentar para direita e esquerda jogo de plataforma
» Como faço para meu inimigo se movimentar da esquerda para direita estilo super mário?
» Rotacionar objeto e mover para a direita e para a esquerda
» Mover a "Tela" para direita, em UNITY 2D.
» [Duvida] movimentar personagem para frente e para traz numa plataforma 3d
» Como faço para meu inimigo se movimentar da esquerda para direita estilo super mário?
» Rotacionar objeto e mover para a direita e para a esquerda
» Mover a "Tela" para direita, em UNITY 2D.
» [Duvida] movimentar personagem para frente e para traz numa plataforma 3d
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos