Question by
goten920 · Feb 11, 2016 at 02:47 PM ·
playerbugjumpplatformerwall collision
Help me in 2d Plataform game, walking in wall
Help me, My player Walking on the Wall. My player gets stuck on the wall and falls to stop walking. I think I need to add Right and Left, my code c#:
using UnityEngine;
using System.Collections;
public class HeroBehavior : MonoBehaviour
{
public Rigidbody2D platforma;
Animator animator;
float axis;
//Verifica se o personagem esta' olhando para o lado direito.
bool ladoDireito = true;
//Velocidade do personagem
Vector2 velocidade;
//Velocidade ma'xima que o personagem pode correr.
public float MaxVelocidade = 10;
bool noChao = false;
public Transform chaoCheck;
float chaoRadius = 0.2f;
public LayerMask oQueEChao;
void Start()
{
//Inicializamos o Componente Animator para podermos trabalhar com os parametros que criamos.
animator = GetComponent<Animator>();
}
// Executado em sincronismo com a fisica do jogo.
void FixedUpdate()
{
noChao = Physics2D.OverlapCircle(chaoCheck.position, chaoRadius, oQueEChao);
animator.SetBool("NoChao", noChao);
animator.SetFloat("VelocidadeVertical", rigidbody2D.velocity.y);
// Seta a varia'vel axis para o valor recebido quando o jogador preciona algum direcional.
// O Input.GetAxis deve ser usado porque suporta as setas do teclado, controles e joysticks.
axis = Input.GetAxis("Horizontal");
//Viramos o personagem de acordo com o valor da varia'vel axis
if (axis > 0 && !ladoDireito)
Flip();
else if (axis < 0 && ladoDireito)
Flip();
//Setamos a variavel velocidade.
if (platforma != null)
velocidade = new Vector2(platforma.velocity.x + (axis * MaxVelocidade), rigidbody2D.velocity.y);
else
velocidade = new Vector2(axis * MaxVelocidade, rigidbody2D.velocity.y);
//Alteramos o parametro Velocidade que colocamos no animator para a velocidade do personagem.
//Como nao importa se e' positivo ou negativo, usamos a funcao Mathf.Abs para pegar o valor absoluto (sem sinal).
animator.SetFloat("Velocidade", Mathf.Abs(axis));
//Por ultimo alteramos a velocidade do personagem para gerar o movimento
rigidbody2D.velocity = velocidade;
}
//Viramos o personagem para o lado que o jogador esta' apertando.
void Flip()
{
ladoDireito = !ladoDireito;
Vector2 novoScale = new Vector2(transform.localScale.x * -1, transform.localScale.y);
transform.localScale = novoScale;
}
void Update()
{
if (noChao && Input.GetButtonDown("Jump"))
{
animator.SetBool("NoChao", false);
rigidbody2D.AddForce(new Vector2(0, 700));
}
}
}
Comment
Your answer
Follow this Question
Related Questions
Player does not jump? 0 Answers
jump through platform causes double jump 1 Answer
How to add bunnyhopping or sliding? 0 Answers
Jumping on enemies help 0 Answers
How to add a jump key 2 Answers