- Home /
Changing player's moving direction
Here is the problem. My jumping player starts going from position x = 0, and I want him to change his speed from 1 to -1 (from moving forward to moving backward) when he goes through x = 17, so basically I want him to move to x = 17 when his position x > 17 and when x < 17. How to do that? I tried to use "while" in my written in C# code but it didn't worked. Heres the code without "while" that I use to move my player forward, what I must change?
Vector3 velocity = Vector3.zero;
public Vector3 gravity;
public Vector3 jumpVelocity;
public float maxSpeed = 5f;
public float forwardSpeed = 1f;
bool jump = false;
void Start () {
}
void Update () {
if (Input.GetKeyDown (KeyCode.Space) || Input.GetMouseButtonDown (0)) {
jump = true;
}
}
void FixedUpdate () {
velocity.x = forwardSpeed;
velocity += gravity * Time.deltaTime;
if (jump == true) {
jump = false;
velocity += jumpVelocity;
}
velocity = Vector3.ClampMagnitude(velocity, maxSpeed);
transform.position += velocity * Time.deltaTime;
}
Sorry for bad english.
Logic-wise: I don't see you checking the value of transform.position.x against 17, anywhere in your fixedupdate(). That's where I would start.
Also, I assume you are NOT using a RIGIDBODY component in your player: rigidbodies compute their OWN position based on velocity, and adjusts velocity based on gravity, all in the background (and you are ALSO doing this in your code).
Your answer
![](https://koobas.hobune.stream/wayback/20220613181453im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
How do I stop the player from moving offscreen? 2 Answers
2D Sidescroller Issues Please help. 1 Answer
Returning position of game object in c# 2 Answers
How to run a script every time a scene is loaded. 0 Answers
OnMouseDrag issue, Event System 0 Answers