- Home /
 
Other
Platformer cat not jumping and is flinging across the map when hitting a corner
I just started using Unity so I watched a 2D platformer tutorial. I did what it told me and the project worked perfectly, so I started making a platformer thing. I have two problems.
When I press the spacebar, W key or up arrow the cat will not jump. The groundCheck is assigned. This is the script:
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class CatController : 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 Rigidbody2D rb2d;
 void Awake() 
 {
     rb2d = GetComponent<Rigidbody2D>();
 }
 
 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");
     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) 
     {
         rb2d.AddForce(new Vector2(0f, jumpForce));
         jump = false;
     }
 }
 void Flip() 
 {
     facingRight = !facingRight;
     Vector3 theScale = transform.localScale;
     theScale.x *= -1;
     transform.localScale = theScale;
 }
 
               }
I needed to record a video for this problem. When the cat hits a corner, they fling across the room. As silly as it looks, I don't think that should be happening. This is the video:
Thanks.
Answer by sandro_lord · Sep 08, 2018 at 10:52 AM
i don't know the problem about jumping but i can help you with fling. all you have to do is in rigidbody go and click "freeze rotation z" like this:
about the jumping problem, i don't know linecast but if i were you i would have made a triggered collider under your cat. if it collides something then let it jump. like this:
 private void OnTriggerEnter2D(Collider2D collision)
     {
          grounded=true;
     }
 private void OnTriggerExit2D(Collider2D collision)
     {
          grounded=false;
     }
     
       
 
               as simple as that.
Follow this Question
Related Questions
2D jumping raycast question 0 Answers
2D Sidescroller enemy AI jump help! Picture Included! 3 Answers
auto jumping to a platform 0 Answers
How do i achieve a rounded jump arc? 1 Answer