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