- Home /
Question by
Kingblade · Feb 07, 2014 at 10:11 PM ·
collision2d-platformergravitywall
No gravity when running against a wall (2D)
I looked around and found this: http://answers.unity3d.com/questions/525048/2d-no-gravity-when-player-jumps-against-wall.html
But I don't understand how the answer worked for him. First of all, the package is importing 3d physics materials, and I tried to play around with the 2d materials and none of the things I tried work.
The walls have 2d box collides, and the player has the same thing with a non-kinematic 2d rigidbody and the following script:
public class playerscript : MonoBehaviour {
public float maxSpeed = 10f;
bool facingRight = true;
Animator anim;
bool grounded = false;
public Transform groundCheck = null;
float groundRadius = 0.2f;
public LayerMask whatIsGround;
public float jumpForce = 700f;
// Use this for initialization
void Start () {
anim = GetComponent<Animator>();
}
// Update is called once per frame
void FixedUpdate () {
grounded = Physics2D.OverlapCircle(groundCheck.position, groundRadius, whatIsGround);
anim.SetBool("Ground", grounded);
anim.SetFloat("vSpeed", rigidbody2D.velocity.y);
float move = Input.GetAxis("Horizontal");
anim.SetFloat("Speed", Mathf.Abs(move));
rigidbody2D.velocity = new Vector2(move * maxSpeed, rigidbody2D.velocity.y);
if (move > 0 && !facingRight)
{
Flip();
}
else if (move < 0 && facingRight)
{
Flip();
}
}
void Update()
{
if(grounded && Input.GetKeyDown(KeyCode.Space))
{
anim.SetBool("Ground", false);
rigidbody2D.AddForce(new Vector2(0, jumpForce));
}
}
void Flip()
{
facingRight = !facingRight;
Vector3 theScale = transform.localScale;
theScale.x *= -1;
transform.localScale = theScale;
}
}
Thank you for your time :)
Comment
Best Answer
Answer by Kingblade · Feb 10, 2014 at 08:01 PM
So apparently... unity uses 0.4 friction as default and it should be changed to 0...