Player não segue a trajetória quando pula correndo
2 participantes
Página 1 de 1
Player não segue a trajetória quando pula correndo
Opa, fiz um script básico de movimentação de personagem em terceira pessoa utilizando o CharacterController. Porém quando o player está andando e pula, ao invés de ele subir (fazendo o movimento do pulo) e se deslocar no ar na mesma direção em que estava correndo, ele simplesmente para e faz o movimento (do pulo) apenas subindo em y e depois posso voltar a andar.
No meu script vocês vão ver que utilizei vector3.zero (quando solto a tecla de andar) e isso acaba zerando os eixos fazendo ele não se movimentar nas direções, mas mesmo pulando continuando apertando a tecla de andar, ele apenas sobe em y ao invés de subir em y e se locomover em z (direção na qual o personagem estava correndo).
Já testei algumas coisas como ao invés de pular com "moveDirection.y = jumpForce;" coloquei "moveDirection = new vector3 (0, jumpForce, speed)" e depois do personagem tocar no chão recebe um "vector3.zero", mas aí o personagem não pula pra frente e sim em direções aleatórias.
Alguém consegue me ajudar com isso?
Script que eu to utilizando:
No meu script vocês vão ver que utilizei vector3.zero (quando solto a tecla de andar) e isso acaba zerando os eixos fazendo ele não se movimentar nas direções, mas mesmo pulando continuando apertando a tecla de andar, ele apenas sobe em y ao invés de subir em y e se locomover em z (direção na qual o personagem estava correndo).
Já testei algumas coisas como ao invés de pular com "moveDirection.y = jumpForce;" coloquei "moveDirection = new vector3 (0, jumpForce, speed)" e depois do personagem tocar no chão recebe um "vector3.zero", mas aí o personagem não pula pra frente e sim em direções aleatórias.
Alguém consegue me ajudar com isso?
Script que eu to utilizando:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour
{
private CharacterController controller;
private Animator animator;
public float velocidade;
public float gravidade;
public float forcaDoPulo;
private float rotacao;
public float velocidadeDeRotacao;
private Vector3 direcaoDeMovimento;
// Start is called before the first frame update
void Start()
{
controller = GetComponent<CharacterController>();
animator = GetComponent<Animator>();
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = false;
}
// Update is called once per frame
void Update()
{
Move();
}
void Move()
{
if (controller.isGrounded)
{
if (Input.GetKey(KeyCode.W))
{
direcaoDeMovimento = Vector3.forward * velocidade;
animator.SetInteger("Andando", 1);
}
if (Input.GetKeyUp(KeyCode.W))
{
direcaoDeMovimento = Vector3.zero;
animator.SetInteger("Andando", 0);
}
if (Input.GetKey(KeyCode.Space))
{
direcaoDeMovimento.y = forcaDoPulo;
animator.SetBool("Pular", true);
}
}
if (Input.GetKeyUp(KeyCode.Space))
{
animator.SetBool("Pular", false);
}
rotacao += Input.GetAxis("Horizontal") * velocidadeDeRotacao * Time.deltaTime;
transform.eulerAngles = new Vector3(0, rotacao, 0);
direcaoDeMovimento.y -= gravidade * Time.deltaTime;
direcaoDeMovimento = transform.TransformDirection(direcaoDeMovimento);
controller.Move(direcaoDeMovimento * Time.deltaTime);
}
}
WesFarias- Iniciante
- PONTOS : 2657
REPUTAÇÃO : 4
Respeito as regras :
Re: Player não segue a trajetória quando pula correndo
Acredito que seja seu if verificando se esta no chão, quando vc pula ai o if fica negativo e não entra na condição. Ou vc pode fazer o seguinte
- Código:
if (Input.GetKey(KeyCode.Space))
{
direcaoDeMovimento = Vector3.forward * velocidade;
direcaoDeMovimento.y = forcaDoPulo;
animator.SetBool("Pular", true);
}
igorobm- MembroAvançado
- PONTOS : 2833
REPUTAÇÃO : 39
Idade : 27
Áreas de atuação : Discord -> 163979429742116864
Respeito as regras :
Re: Player não segue a trajetória quando pula correndo
Ele ficou do mesmo jeito quando utilizei new vector3 (0, forcaDoPulo, velocidade).igorobm escreveu:Acredito que seja seu if verificando se esta no chão, quando vc pula ai o if fica negativo e não entra na condição. Ou vc pode fazer o seguinte
- Código:
if (Input.GetKey(KeyCode.Space))
{
direcaoDeMovimento = Vector3.forward * velocidade;
direcaoDeMovimento.y = forcaDoPulo;
animator.SetBool("Pular", true);
}
Senão mudar o player de direção até funciona, mas no momento que tu vira pra algum lado ele volta a pular no mesmo lugar
WesFarias- Iniciante
- PONTOS : 2657
REPUTAÇÃO : 4
Respeito as regras :
Tópicos semelhantes
» [RESOLVIDO] Player correndo e animação quando estiver colidindo
» Jogo 2D Personagem atravessa o chão quando Pula muito alto
» Player agarra correndo de frente com a parede.
» Meu personagem pula mesmo quando ja está no ar pulando
» Como fazer o player pula
» Jogo 2D Personagem atravessa o chão quando Pula muito alto
» Player agarra correndo de frente com a parede.
» Meu personagem pula mesmo quando ja está no ar pulando
» Como fazer o player pula
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos