- 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
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