Problema com Platform Effector 2D e AddForce
2 participantes
Página 1 de 1
Problema com Platform Effector 2D e AddForce
Galera, o que acontece é basicamente o seguinte:
Eu adicionei um GroundChecker no meu personagem 2d e coloquei um box collider como trigger para detectar a colisão, até ai tudo bem, ele detecta a colisão e seta a minha variável canJump como true. O problema é quando chega nessa parte
O que acontece é que as vezes o personagem pula mais alto do que deveria.
Ou quando eu uso o Platform Effector 2D. Ele meio que da um "Super Pulo". Alguém ai tem ideia de como resolver?
Script do Player
Script do GoundeChecker
Eu adicionei um GroundChecker no meu personagem 2d e coloquei um box collider como trigger para detectar a colisão, até ai tudo bem, ele detecta a colisão e seta a minha variável canJump como true. O problema é quando chega nessa parte
- Código:
if (Input.GetButton("Jump") && canJump == true)
{
gameObject.GetComponent<Rigidbody2D>().AddForce(new Vector2(0f, jumpForce), ForceMode2D.Impulse);
}
O que acontece é que as vezes o personagem pula mais alto do que deveria.
Ou quando eu uso o Platform Effector 2D. Ele meio que da um "Super Pulo". Alguém ai tem ideia de como resolver?
Script do Player
- Código:
using UnityEngine;
public class PlayerController : MonoBehaviour
{
public bool canJump = false;
public float moveSpeed = 10f, jumpForce = 600f;
float input;
void Update()
{
Jump();
input = Input.GetAxis("Horizontal");
Vector3 movement = new Vector3(input, 0f, 0f);
transform.position += movement * Time.deltaTime * moveSpeed;
}
void Jump()
{
if (Input.GetButton("Jump") && canJump == true)
{
gameObject.GetComponent<Rigidbody2D>().AddForce(new Vector2(0f, jumpForce), ForceMode2D.Impulse);
}
}
}
Script do GoundeChecker
- Código:
using UnityEngine;
public class GroundCheck : MonoBehaviour
{
GameObject Player;
void Start()
{
Player = gameObject.transform.parent.gameObject;
}
void OnTriggerEnter2D(Collider2D collision)
{
if (collision.tag == "Ground")
{
Player.GetComponent<PlayerController>().canJump = true;
}
}
void OnTriggerExit2D(Collider2D collision)
{
if (collision.tag == "Ground")
{
Player.GetComponent<PlayerController>().canJump = false;
}
}
}
alefe c oliveira- Membro
- PONTOS : 1782
REPUTAÇÃO : 8
Respeito as regras :
Re: Problema com Platform Effector 2D e AddForce
Não sei se estou certo, mas esse lance do pulo pode estar ligado a falta do *Time.deltaTime Linha 22 do Player, eu add ali como poderia ser para dar certo, Mas sou iniciante também, e estou aprendendo junto. Se conseguir solucionar, por favor, volte aqui.Script do Player escreveu:
- Código:
using UnityEngine;
public class PlayerController : MonoBehaviour
{
public bool canJump = false;
public float moveSpeed = 10f, jumpForce = 600f;
float input;
void Update()
{
Jump();
input = Input.GetAxis("Horizontal");
Vector3 movement = new Vector3(input, 0f, 0f);
transform.position += movement * Time.deltaTime * moveSpeed;
}
void Jump()
{
if (Input.GetButton("Jump") && canJump == true)
{
gameObject.GetComponent<Rigidbody2D>().AddForce(new Vector2(0f, jumpForce*Time.deltaTime), ForceMode2D.Impulse);
}
}
}
iours- Iniciante
- PONTOS : 2415
REPUTAÇÃO : 6
Respeito as regras :
Re: Problema com Platform Effector 2D e AddForce
Na vdd não, nos tutoriais que vi onde o pessoal usava essa linha de codigo pra pular, ninguém colocava * Time.DeltaTime
alefe c oliveira- Membro
- PONTOS : 1782
REPUTAÇÃO : 8
Respeito as regras :
Tópicos semelhantes
» Platform Effector 2D
» Problema com Addforce no pulo HELP
» cross platform input
» Não consigo usar o .AddForce Unity
» probleminha ao usar o Platform Effector2d
» Problema com Addforce no pulo HELP
» cross platform input
» Não consigo usar o .AddForce Unity
» probleminha ao usar o Platform Effector2d
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos