Question by
pratyushmenon · Jun 22, 2020 at 08:22 AM ·
playerflickeringglitching
Player Character glitching
I have a 2D Player Character moving in a tilemap and it was working fine, but now all of a sudden it keeps flickering in and out of existence when I hit play. Can anyone tell me what's going on? Here is the PlayerController script for reference.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
public float speed = 5f;
public float jumpSpeed = 8f;
private float movement = 0f;
public Rigidbody2D rigidBody;
private bool isTouchingGround;
private Animator playerAnimation;
public Vector3 respawnPoint;
public bool doublejump;
public LevelManager gameLevelManager;
private Transform FirePoint;
private int direction;
public FeetScript playerFeetScript;
// Start is called before the first frame update
void Start()
{
rigidBody = GetComponent<Rigidbody2D>();
playerAnimation = GetComponent<Animator>();
respawnPoint = transform.position;
doublejump = true;
gameLevelManager = FindObjectOfType <LevelManager> ();
FirePoint = this.gameObject.transform.GetChild(1);
direction = 1;
playerFeetScript = FindObjectOfType<FeetScript>();
}
// Update is called once per frame
void Update()
{
isTouchingGround = playerFeetScript.touchGround;
movement = Input.GetAxis("Horizontal");
if (movement != 0f)
{
rigidBody.velocity = new Vector2(movement * speed, rigidBody.velocity.y);
}
if (Input.GetButtonDown("Jump")&& (isTouchingGround || doublejump))
{
rigidBody.velocity = new Vector2(rigidBody.velocity.x, jumpSpeed);
doublejump = false;
}
if (Input.GetButtonDown("Fire1"))
{
playerAnimation.SetTrigger("Attack");
}
if (Input.GetButtonDown("Fire2"))
{
playerAnimation.SetTrigger("Block");
}
if (Input.GetButtonDown("Fire3"))
{
playerAnimation.SetTrigger("Cast");
}
if (rigidBody.velocity.x > 0.1)
{
if (direction == -1)
{
transform.localScale = new Vector2(1, 1);
FirePoint.Rotate(0f, 180f, 0f);
direction = 1;
}
playerAnimation.SetFloat("Speed", rigidBody.velocity.x);
}
else if (rigidBody.velocity.x < -0.1)
{
if (direction == 1)
{
transform.localScale = new Vector2(-1, 1);
FirePoint.Rotate(0f, 180f, 0f);
direction = -1;
}
playerAnimation.SetFloat("Speed", -(rigidBody.velocity.x));
}
playerAnimation.SetBool("OnGround", isTouchingGround);
if (isTouchingGround) doublejump = true;
}
void OnTriggerEnter2D(Collider2D other)
{
if (other.tag == "FallDetector")
{
gameLevelManager.Respawn();
}
if (other.tag == "Checkpoint")
{
respawnPoint = other.transform.position;
}
}
}
And here's a clip of what happens when the game runs: Glitching Clip
Comment
Your answer
![](https://koobas.hobune.stream/wayback/20220613001517im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Sprite objectfield flickers in custom inspector editor. 1 Answer
player glitching through floor when turning 1 Answer
Character won't jump with a joystick 0 Answers
Can I create fbx file from the character i generated in UMA tool 0 Answers
Problems with rotating the player on the Y axis C# 0 Answers