problemas com "wall Jump" , atribuir força ao eixo X
Página 1 de 1
problemas com "wall Jump" , atribuir força ao eixo X
Olá a todos estou com problemas com uma parte do script do "wall Jump" estou mostrando todo meu script casso tenha
algo pra melhorar estou aberto a sugestão...
mais voltando o assunto peço ajuda "wall Jump" "OBS: ele estar sempre ativado para testes " o problema estar no eixo X
ele não estar atribuindo força o eixo X já usei o método Rb.velocity mais continha a mesma coisa.
que poderia dar uma luz no túnel agradeço
aqui e opcional quem quiser dar uma dica fica a vontade
algo pra melhorar estou aberto a sugestão...
mais voltando o assunto peço ajuda "wall Jump" "OBS: ele estar sempre ativado para testes " o problema estar no eixo X
ele não estar atribuindo força o eixo X já usei o método Rb.velocity mais continha a mesma coisa.
que poderia dar uma luz no túnel agradeço
- Código:
if (isWallsleding)
{
// ele estar sempre ativado ater termina os testes => o o problema e que o addForce não estar pegando
// a velocidade do eixo X "OBS:"CamMunver" não foi implementado "
Vector2 force = new Vector2(VelJump * stestemu.x * -direcion, VelJump * stestemu.y);
rb.velocity = Vector2.zero;
=> rb.AddForce(new Vector2(VelJump * stestemu.x * -direcion, VelJump * stestemu.y), ForceMode2D.Impulse); <=
}
aqui e opcional quem quiser dar uma dica fica a vontade
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerV2 : MonoBehaviour
{
[Header("Pleyer muver")]
private float munve;
[SerializeField] private float MuverSpeed = 2;
[SerializeField] private bool Jump;
private int junpDua = 1;
[SerializeField] private float VelJump = 6;
Rigidbody2D rb;
[Header("VerificarCão")]
[SerializeField] private bool estarNoChao;
public Transform posicaoPe;
public float ChackRadio = 1;
public LayerMask isGrald;
SpriteRenderer sprite;
Animator anim;
[Header("Wall")]
public Vector3 wallOffset;
public float wallRadius =1;
public float wallSpeed =1;
public LayerMask wallLayer;
public bool onWall;
public bool isWallsleding;
public float direcion = 1;
public Vector2 stestemu;
// Start is called before the first frame update
void Start()
{
rb = GetComponent<Rigidbody2D>();
sprite = GetComponent<SpriteRenderer>();
anim = GetComponent<Animator>();
}
// Update is called once per frame
void Update()
{
Flip();
inpunt();
AnimaCorpo();
MuverJump();
FisicaCheca();
VwalJump();
}
private void FixedUpdate()
{
MuverPleyer();
}
void FisicaCheca()/*Updete*/
{
estarNoChao = Physics2D.OverlapCircle(posicaoPe.position, ChackRadio, isGrald);
bool rightWall = Physics2D.OverlapCircle(transform.position + new Vector3(wallOffset.x, 0), wallRadius, wallLayer);
bool leftWall = Physics2D.OverlapCircle(transform.position + new Vector3(-wallOffset.x, 0), wallRadius, wallLayer);
if (rightWall || leftWall)
{
onWall = true;
}
else onWall = false;
}
void MuverPleyer() /*FixedUpdate*/
{/* movimentação do pleyer*/
rb.velocity = new Vector2(munve * MuverSpeed, rb.velocity.y);
if (rb.velocity.x > 0) direcion = 1;
else if (rb.velocity.x < 0) direcion = 0;
if ( isWallsleding)
{
if (rb.velocity.y < -wallSpeed)
{
rb.velocity = new Vector2(rb.velocity.x, -wallSpeed);
}
}
}
void MuverJump()
{
/*pulo normal*/
if (Jump && !isWallsleding)
{
// rb.AddForce (new Vector2(0, VelJump),ForceMode2D.Impulse);
rb.velocity = Vector2.up * VelJump;
junpDua--;
Jump = false;
}
if (junpDua == 0)
{
Jump = false;
}
if (isWallsleding)
{
// ele estar sempre ativado ater termina os testes => o o problema e que o addForce não estar pegando
// a velocidade do eixo X
Vector2 force = new Vector2(VelJump * stestemu.x * -direcion, VelJump * stestemu.y);
rb.velocity = Vector2.zero;
rb.AddForce(new Vector2(VelJump * stestemu.x * -direcion, VelJump * stestemu.y), ForceMode2D.Impulse);
}
}/*FixedUpdate*/
void Flip()
{
/* flinp muda a direnção do Pleyer*/
if (munve < 0)
{
sprite.flipX = true;
}
else if (munve > 0)
{
sprite.flipX = false;
}
}/*Update*/
void inpunt() /*Update*/
{
/* inputes de movimento X*/
munve = Input.GetAxis("Horizontal");
/* buntão do jump*/
if (Input.GetButtonDown("Jump") && estarNoChao)
{
Jump = true;
}
if (Input.GetButtonDown("Jump") && !estarNoChao && junpDua > 0)
{
Jump = true;
}
}
void VwalJump()
{
if (onWall && !estarNoChao && rb.velocity.y < 0 /*&& munve != 0*/)
{
isWallsleding = true;
}
else
{
isWallsleding = false;
}
}
/* animação do personagem*/
void AnimaCorpo() /*Update*/
{
float EiY = rb.velocity.y;
anim.SetFloat("EiY", EiY);
/* resete da animação quando estiver no grald*/
if (estarNoChao)
{
junpDua = 1;
anim.SetBool("jumpH", false);
anim.SetBool("fallH", false);
anim.SetBool("jumpV", false);
anim.SetBool("fallV", false);
/*animação pulo anda fall V - H*/
if (rb.velocity.x != 0 && munve != 0)
{
anim.SetBool("anda", true);
}
else anim.SetBool("anda", false);
}
else
{
if (rb.velocity.x == 0)
{
anim.SetBool("anda", false);
if (rb.velocity.y > 0)
{
anim.SetBool("jumpH", false);
anim.SetBool("fallH", false);
anim.SetBool("jumpV", true);
anim.SetBool("fallV", false);
}
if (rb.velocity.y < 0)
{
anim.SetBool("jumpH", false);
anim.SetBool("fallH", false);
anim.SetBool("jumpV", false);
anim.SetBool("fallV", true);
}
}
else
{
if (rb.velocity.y > 0)
{
anim.SetBool("jumpH", true);
anim.SetBool("fallH", false);
anim.SetBool("jumpV", false);
anim.SetBool("fallV", false);
}
if (rb.velocity.y < 0)
{
anim.SetBool("jumpH", false);
anim.SetBool("fallH", true);
anim.SetBool("jumpV", false);
anim.SetBool("fallV", false);
}
}
}
/*-------------------------------------------*/
if (rb.velocity.y > 0 && !estarNoChao && Jump)
{
anim.SetBool("smsl", true);
anim.SetBool("JumpDual", true);
}
if (rb.velocity.y < 0 && !estarNoChao && Jump)
{
anim.SetBool("smsl", true);
anim.SetBool("JumpDual", true);
}
else if (rb.velocity.y < -1 && !estarNoChao && !Jump)
{
anim.SetBool("smsl", false);
anim.SetBool("JumpDual", false);
}
}
private void OnDrawGizmos()
{
Gizmos.color = Color.red;
Gizmos.DrawWireSphere(transform.position + new Vector3(wallOffset.x, 0), wallRadius);
Gizmos.DrawWireSphere(transform.position + new Vector3(-wallOffset.x, 0), wallRadius);
}
}
Tópicos semelhantes
» [PEDIDO] Script de pulo com Wall-Jump (Rigidbody)
» BOOL DE JUMP FICANDO TRUE (JUMP NÃO FUNCIONA DE VEZ EM QUANDO)
» Não consigo atribuir pontos no admob reward.
» [TUTORIAL] Zone Wall - ESTILO BATTLE ROYALE
» força do clique
» BOOL DE JUMP FICANDO TRUE (JUMP NÃO FUNCIONA DE VEZ EM QUANDO)
» Não consigo atribuir pontos no admob reward.
» [TUTORIAL] Zone Wall - ESTILO BATTLE ROYALE
» força do clique
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos