Pulo "muito Alto"
3 participantes
Página 1 de 1
Pulo "muito Alto"
Oi, espero que alguém me ajude, já que n conseguir gravar um vídeo para anexar vou ter q explicar.
o script esta okay, porem tem uns "erros" pequenos... a ação de pulo e animação são executadas, mas quando eu aperto a tecla (espaço), ela simplesmente não pula, faz um tipo de carregamento, e se demorar segurando ele da um super pulo (coisa q n quero pra acontecer)... e graças a isso a sincronia com RIGIDBODY do personagem fica errado, acaba a animação o RIGIDBODY ainda esta no ar.
quem poder ajudar agradeço, tanto pra consertar o script, ou me indicando vídeos de como adicionar pulo, pq se n tiver conserto nesse eu faço por outro vídeo ksksks... e vou tentar gravar um vídeo para vcs entenderem melhor.
o script esta okay, porem tem uns "erros" pequenos... a ação de pulo e animação são executadas, mas quando eu aperto a tecla (espaço), ela simplesmente não pula, faz um tipo de carregamento, e se demorar segurando ele da um super pulo (coisa q n quero pra acontecer)... e graças a isso a sincronia com RIGIDBODY do personagem fica errado, acaba a animação o RIGIDBODY ainda esta no ar.
quem poder ajudar agradeço, tanto pra consertar o script, ou me indicando vídeos de como adicionar pulo, pq se n tiver conserto nesse eu faço por outro vídeo ksksks... e vou tentar gravar um vídeo para vcs entenderem melhor.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MovimentacaoPesonagem : MonoBehaviour
{
//velocidade de corrida e rodatação(virar para os lados)
public float runSpeed = 7;
public float rotationSpeed = 250;
//para conectar o animator do play no script
public Animator animator;
//ajuda na animação (frente,tras,lados)
private float x, y;
//tudo isso é pra pular
public Rigidbody rb;
public float jumpHeight = 1;
public Transform groundCheck;
public float groundDistance = 0.1f;
public LayerMask groundMask;
bool isGrounded;
void Update()
{
x = Input.GetAxis("Horizontal");
y = Input.GetAxis("Vertical");
transform.Rotate(0, x * Time.deltaTime * rotationSpeed, 0);
transform.Translate(0, 0, y * Time.deltaTime * runSpeed);
animator.SetFloat("VelX", x);
animator.SetFloat("VelY", y);
//animacões especiais
if (Input.GetKey("e"))
{
animator.SetBool("Dance", false);
animator.Play("Dance_1");
}
if (Input.GetKey("r"))
{
animator.SetBool("Dance", false);
animator.Play("Dance_2");
}
//condição para animação ser executada.
if (x>0 || x<0 || y>0 || y<0)
{
animator.SetBool("Dance", true);
}
//verificação para execultar pulo
isGrounded = Physics.CheckSphere(groundCheck.position, groundDistance, groundMask);
if(Input.GetKey("space") && isGrounded)
{
animator.Play("Pulo");
Invoke("Pulo", 0.6f);
}
}
public void Pulo ()
{
rb.AddForce(Vector3.up*jumpHeight,ForceMode.Impulse);
}
}
jackamir15- Iniciante
- PONTOS : 1731
REPUTAÇÃO : 2
Idade : 25
Respeito as regras :
Re: Pulo "muito Alto"
Tire o Invoke e chame o metodo Pulo() direto.
Magnatah- Instrutor
- PONTOS : 3548
REPUTAÇÃO : 209
Idade : 24
Áreas de atuação : Dєรєиvσlvєdσя Wєb(Fяσит-єиd), Blєиdєя, υиiтy, C#, ρнρ є Jαvαรcяiρт.
Respeito as regras :
Re: Pulo "muito Alto"
A dica ajudou na questão do pulo, ele não "carrega"... mas o Rigidbody ainda ta atrasado.Magnatah escreveu:Tire o Invoke e chame o metodo Pulo() direto.
deixei o video que gravei... video mostrando erro ... e quando tento adicionar oq tinha no invoke da erro de argumento.
jackamir15- Iniciante
- PONTOS : 1731
REPUTAÇÃO : 2
Idade : 25
Respeito as regras :
Re: Pulo "muito Alto"
jackamir15 escreveu:A dica ajudou na questão do pulo, ele não "carrega"... mas o Rigidbody ainda ta atrasado.Magnatah escreveu:Tire o Invoke e chame o metodo Pulo() direto.
deixei o video que gravei... video mostrando erro ... e quando tento adicionar oq tinha no invoke da erro de argumento.
Você está inserindo uma variavel para uma função que não necessita dela, por isso o erro.
- Código:
// pseudo
função blabla(requer variavel x){}
chamar = blabla(variavel x); // Você obrigatoriamente precisa colocar algo para chamar a função.
// mais pseudo
função blablabla_opcional(requer variavel x, entretanto se não for informada x = 0) {}
chamar = blabla_opcional(); // Tanto faz se você colocar algo ou não para chamar a função.
// outro pseudo
função pulo(){} // Obrigatoriamente não recebe entradas.
chamar = pulo(); // Se você colocar algo entre parenteses, a chamada vai ser invalida
O que resolveria seria aumentar a velocidade da animação, ou o tamanho do pulo, aumentando o jumpHeight, talvez ambos.
Note que o pulo é executado, entretanto a animação tardia em sua execução.
Outro modo que seria melhor aplicavel é o uso de courotines, tornando o metodo void em um IEnumerator.
https://docs.unity3d.com/Manual/BestPracticeUnderstandingPerformanceInUnity3.html
Tópicos semelhantes
» Jogo 2D Personagem atravessa o chão quando Pula muito alto
» script 2D double jump erro no 2 pulo que não pla ou pula alto demais
» Pulo 2D
» Alto falante Vibrar
» Script muito Grande
» script 2D double jump erro no 2 pulo que não pla ou pula alto demais
» Pulo 2D
» Alto falante Vibrar
» Script muito Grande
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos