Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
  • Help Room /
avatar image
0
Question by Cott · Jun 29, 2016 at 11:30 PM · 2d gamejumpingplatformswall collisionwall jump

2D sidescrolling game. Jumping problems through platforms and platform effector.

I'm trying to create a side scrolling game, so the character has to jump and not move sideways. The problem is that I cannot implement a jump (which should be evolved into a double jump in the future) because I don't know how to check the ground and how to apply the forces. I tryed to check the ground with a raycast but it works in 3D but not in 2D and I know I can check the ground when the velocity.y is zero but is a solution that can bring future problems. Now my question is, what is the simplest and most effective solution to check the ground and jump through the platforms (one way only, from bottom to top)? Should I use addForce or trasform? I'm stuck on this for a week now and it's driving me crazy, Thank you for all the answers.

This a code I copied from a youtube tutorial, it works in 3D but not in 2D. Is this the right way to do it? Note I'm using "platform effector" at the moment, tell me if I should get rid of it.

 using UnityEngine;
 using System.Collections;
 
 public class PlayerController : MonoBehaviour
 {
     
     [System.Serializable]
     public class MoveSettings
     {
         public float jumpVel = 25;
         public float distToGrounded = 5f;
         public LayerMask ground;
     }
     
     [System.Serializable]
     public class PhysSettings
     {
         public float downAccel = 0.75f;
     }
     
     [System.Serializable]
     public class InputSettings
     {
         public float inputDelay = 0.1f;
         public string JUMP_AXIS = "Jump";
     }
     
     public MoveSettings moveSetting = new MoveSettings ();
     public PhysSettings physSetting = new PhysSettings ();
     public InputSettings inputSetting = new InputSettings ();
     
     Vector2 velocity = Vector2.zero;
     Rigidbody2D rBody;
     float jumpInput;
 
     bool Grounded ()
     {
         return Physics.Raycast (transform.position, Vector2.down, moveSetting.distToGrounded, moveSetting.ground);
     }
     
     void Start ()
     {
         if (GetComponent<Rigidbody2D> ()) {
             rBody = GetComponent<Rigidbody2D> ();
         } else {
             Debug.LogError ("The character needs a rigidbody.");
         }
         
         jumpInput = 0;
     }
     
     void GetInput ()
     {
 
         jumpInput = Input.GetAxisRaw (inputSetting.JUMP_AXIS);
     }
     
     void Update ()
     {
         GetInput ();
     }
     
     void FixedUpdate ()
     {
         Jump ();
         
         rBody.velocity = transform.TransformDirection (velocity);
     }
 
     void Jump ()
     {
         if (jumpInput > 0 && Grounded ()) {
             velocity.y = moveSetting.jumpVel;
         } else if (jumpInput == 0 && Grounded ()) {
             velocity.y = 0;
         } else {
             velocity.y -= physSetting.downAccel;
         }
     }
 }
 
Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

0 Replies

· Add your reply
  • Sort: 

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

61 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Hi . i am making a ninjump like game and i am having trouble on the start with with player sprite jumping script. 1 Answer

What is the additional code shall I write to limit the speed and the direction when jumping.(2D game) 0 Answers

Why 2d jump not working on touch? 0 Answers

I can't do jump in my 2D game 1 Answer

Calculate jumptime 0 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges