- Home /
Question by
unity_6ZMJlhFpaWH3QA · Jul 02, 2019 at 08:27 PM ·
jumpingplatformerfauxgravity
problem with faux gravity (Small planet like 2D physics) and player jumping
public class PlayerMovement : MonoBehaviour { //Scripts public PlanetScript PlanetScp;
//RigidyBody 2D
Rigidbody2D rb;
//bools
bool canMove = true;
// floats
public float MoveSpeed = 10f;
public float JumpSpeed = 10f;
//ints
public int NumberOfJumps = 2;
public int NumberOfJumpsDefault = 2;
public float MaxTimeInAir = 2;
void Start()
{
rb = GetComponent<Rigidbody2D>();
NumberOfJumps = NumberOfJumpsDefault;
}
void Update()
{
if (canMove)
{
if (Input.GetKey("d")) { Run(1); }
if (Input.GetKey("a")) { Run(-1); }
if (Input.GetKeyDown("space") && NumberOfJumps > 0)
{
Jump();
NumberOfJumps--;
}
if (rb.velocity.y == 0)
{
NumberOfJumps = NumberOfJumpsDefault;
}
}
}
void Run(int directionOnX)
{
Vector2 horizontal = new Vector2(directionOnX, rb.velocity.y).normalized;
rb.MovePosition(rb.transform.position + rb.transform.TransformDirection((horizontal) * MoveSpeed * Time.deltaTime));
}
void Jump()
{
Vector2 vertical = new Vector2(rb.velocity.x, JumpSpeed).normalized;
rb.velocity = rb.transform.position + rb.transform.TransformDirection((vertical) * MoveSpeed * Time.deltaTime);
rb.velocity = rb.transform.position + rb.transform.TransformDirection((-vertical) * MoveSpeed * Time.deltaTime);
//the problem is that when the player is jumping and moving, he will keep flying away from the planet //hope this is enough
Comment
Your answer
![](https://koobas.hobune.stream/wayback/20220612204205im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Character Instantly hits Ground after Falling off Object 1 Answer
how to flip a sprite 0 Answers
Problem of gravity 1 Answer
Player's jump is random and inconsistent... 4 Answers
Can't control movement while jumping 1 Answer