How to make my character fall when running against a collider.
Hi, I'm new here, I usually try to solve my problems in Unity searching at google but this time I couldn't get an answer. So basically I've done a tutorial for a platform 2d game and I copied the script for my player, the problem there is that when I'm running against a wall (with box collider 2D) the player doesn't fall. using UnityEngine; using System.Collections;
public class SimplePlatformController : MonoBehaviour {
[HideInInspector] public bool facingRight = true;
[HideInInspector] public bool jump = false;
public float moveForce = 365f;
public float maxSpeed = 5f;
public float jumpForce = 1000f;
public Transform groundCheck;
private bool grounded = false;
private Animator anim;
private Rigidbody2D rb2d;
// Use this for initialization
void Awake ()
{
anim = GetComponent<Animator>();
rb2d = GetComponent<Rigidbody2D>();
}
// Update is called once per frame
void Update ()
{
grounded = Physics2D.Linecast(transform.position, groundCheck.position, 1 << LayerMask.NameToLayer("Ground"));
if (Input.GetButtonDown("Jump") && grounded)
{
jump = true;
}
}
void FixedUpdate()
{
float h = Input.GetAxis("Horizontal");
anim.SetFloat("Speed", Mathf.Abs(h));
if (h * rb2d.velocity.x < maxSpeed)
rb2d.AddForce(Vector2.right * h * moveForce);
if (Mathf.Abs (rb2d.velocity.x) > maxSpeed)
rb2d.velocity = new Vector2(Mathf.Sign (rb2d.velocity.x) * maxSpeed, rb2d.velocity.y);
if (h > 0 && !facingRight)
Flip ();
else if (h < 0 && facingRight)
Flip ();
if (jump)
{
anim.SetTrigger("Jump");
rb2d.AddForce(new Vector2(0f, jumpForce));
jump = false;
}
}
void Flip()
{
facingRight = !facingRight;
Vector3 theScale = transform.localScale;
theScale.x *= -1;
transform.localScale = theScale;
}
}
The same thing happens when jumping and keep pressing the horizontal button against the wall. There's the code from the tutorial, I hope you could help me, thanks.
Answer by Istros · Sep 17, 2016 at 08:02 PM
I am not sure that this will help but if you make a 2DPhysics Material then set its Friction to 0 and attach it to your players collider it should be fixed.I hope this will help.
Yes, it solved the problem. But now the character continues moving forward to the direction I push for a while, maybe I should edit something in my script? Thanks for answering!
Never$$anonymous$$d I just put the Friction to the walls with 0.001 Bounciness and Friction 0, it does what I want so I don't know if later I'll get problems with that idk. Thanks (didn't even know that Friction existed).
Your answer
Follow this Question
Related Questions
Jumping, Falling and Landing 2D 1 Answer
I have got bugs when i jump 0 Answers
Problem with Jumping code in Unity 2D,problem with Jumping code in Unity 2D 0 Answers
Problem With a Multi-Jump C# script, robot 2d character controller 1 Answer
Why only the first frame plays in my jump animation 0 Answers