- 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