- Home /
Sprite disapears when moving left
Hi, I'm new to coding and followed some turotials on youtube.
Somehow my Sprite disappears when moving left. I also used character rigging (adding bones to the sprite).
WHen moving right, everything is fine, but the sprite disappears when moving left.
Here's the code:
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class PlayerController : MonoBehaviour { //------------Variables---------------------------------------------------------
private Rigidbody2D rb; //Rigidbody of the player sprite
public float speed; //Moving speed
public float jumpForce;
private float moveInput; //A or D; left or right
private bool isGrounded; //Check if the sprite is attached to the ground
public Transform feetPos;
public float checkRadius; //Checks the Radius between feetPos and the Ground
private float jumpTimeCounter; //Counts the times the player jumpes
public float jumpTime; //Checks the jumptime of the player
private bool isJumping; //Checks whether the player is jumping or not
private bool facingRight = true; //Checks whether the sprite is facing right
//----------------------------------------------------------------------------------
void Start()
{
rb = GetComponent<Rigidbody2D>();
}
void FixedUpdate()
{
moveInput = Input.GetAxisRaw("Horizontal");
rb.velocity = new Vector2(moveInput * speed, rb.velocity.y);
}
void Update()
{
isGrounded = Physics2D.OverlapCircle(feetPos.position, checkRadius); //Defining what means "isGrounded"
if(moveInput < 0 && facingRight) //calling the flip function:
{
flip(); //calls the flip function if sprite is moving left
}
else if (moveInput > 0 && !facingRight)
{
flip();
}
//-----------------------------------------------------------------------------
//Make the player sprite flip sides (facing left and right):
/*if(moveInput > 0)
{
transform.eulerAngles = new Vector3(0, 0, 0); //Player facing right
}
else if(moveInput < 0)
{
transform.eulerAngles = new Vector3(0, 180, 0); //Player facing left
}*/
//-----------------------------------------------------------------------------
if(isGrounded == true && Input.GetKeyDown(KeyCode.Space)) //Jumping function
{
isJumping = true; //Sets isJumping as true
jumpTimeCounter = jumpTime;
rb.velocity = Vector2.up * jumpForce;
}
if(Input.GetKey(KeyCode.Space) && isJumping == true) //Jumping higher is key is pressed longer
{
if(jumpTimeCounter > 0)
{
rb.velocity = Vector2.up * jumpForce;
jumpTimeCounter -= Time.deltaTime; //So jumptimeCounter returns false at some point
}
else
{
isJumping = false; //Sets isJumping to false
}
}
if (Input.GetKey(KeyCode.Space)) //Sets isJumping to false
{
isJumping = false;
}
}
void flip()
{
facingRight = !facingRight; //When the sprite is facing left
transform.Rotate(0f, 180f, 0f); //Turn the sprite at 180°
}
}
Answer by Tomatotom1234 · Jan 07, 2021 at 05:20 PM
You could try changing the size from 1 to -1 that would do the same thing
Answer by AmberCeiling · Jan 09, 2021 at 01:31 PM
Hi Tomatotom,
thanks very much for the tipp.
Now I have found the solution with this code:
if (moveInput < 0) //Move ot the left { transform.localScale = new Vector2(-1, 1);
} else if (moveInput > 0) //Move to the right { transform.localScale = new Vector2(1, 1); }
Simply add this code ot the void update function:
if (moveInput < 0) { transform.localScale = new Vector2(-1, 1); } else if (moveInput > 0) { transform.localScale = new Vector2(1, 1); }
Your answer
Follow this Question
Related Questions
Flip over an object (smooth transition) 3 Answers
When fliping the character the rotation of character's weapon goes backward 0 Answers
Flip the player with arm rotation 2 Answers
2D Sprite constantly flipping 0 Answers
Why does my camera automatically flip when trying to follow object around X-axis? 0 Answers