- Home /
2D Player Rotation
Hello All, I am currently Developing a 2D Game and I have perfectly gotten the character to move both right and left (And of course jump). Now, my issue is that the player is facing right when It goes Forward (right) but when It goes backward it doesn't flip, it keeps looking Forward. Is there any way to fix this?
This is my 2D Movement Script:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Move2D : MonoBehaviour {
public float moveSpeed = 5f;
public bool isGrounded = false;
public Transform player;
void Update() {
Jump();
Vector3 movement = new Vector3(Input.GetAxis("Horizontal"), 0f, 0f);
transform.position += movement * Time.deltaTime * moveSpeed;
}
void Jump() {
if (Input.GetButtonDown("Jump") && isGrounded == true) {
gameObject.GetComponent<Rigidbody2D>().AddForce(new Vector2(0f, 9f), ForceMode2D.Impulse);
}
}
}
Thank you very much.
Answer by VeryAnnoyingCat · Feb 07, 2021 at 11:11 AM
Setting the scale to negative values has the effect of flipping the sprite along the along that axis and then scaling. You could also use the relatively new Flip parameters in the Sprite Renderer, but it doesn't flip the collider and / or other things. Code:
if (movement.x > 0)
{
transform.localScale = new Vector2(1, 1);
}
else if (movement.x < 0)
{
transform.localScale = new Vector2(-1, 1);
}
}
It works great! Thank you so much, but why does its size increase once It rotates?
Answer by Agent_Phantom8 · Feb 08, 2021 at 08:37 AM
Is there a way to fix the Size Increasing Once Rotated? I have tried to set the Numbers to the current player size but that would then display the message: error CS1503: Argument 2: cannot convert from 'double' to 'float' Is there any solution?
Your answer
Follow this Question
Related Questions
(2d in 3d) Movement relative to camera using JS 0 Answers
Third Person Character Controller Movement 1 Answer
Rotation used as movement 4 Answers
Joystick for WASD & Joystick for Camera? 0 Answers
2d character stuck in jump 0 Answers