So my player cotntroller is pretty simple, but very buggy. First of all I want to try and eliminate the bool used for jumping as it makes the tilemap levels im building much harder to make. Secondly the player can stick to walls if you hold forward against them, any way to fix this? And tips or advice would be much appriciated.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Sprites;
public class playerController : MonoBehaviour
{
//MOVEMENT
[Tooltip("The maximum horizontal movement speed in units per second.")]
public float speed = 8; // movenment speed for Luca
[Tooltip("The maximum vertical jump speed in units per second.")]
public float jumpspd = 12; // jumo height for Luca
//ANIMATION
public Animator anim;
bool canDash = true;
bool grounded;
bool isRunning;
public SpriteRenderer ren;
//UNUSED AS OF NOW
public static float LucaHP;
public static float LucaSP;
public GameObject hitbox;
public static float damage;
//TODO: MOVE ONTO NEW SCRIPT
// Use this for initialization
void Start()
{
anim = gameObject.GetComponent<Animator>();
anim.SetBool("isRunning", false);
anim.SetBool("dashing", false);
canDash = true;
}
// Update is called once per frame
void Update()
{
playermove();
HandleFlip();
HandleJump();
HandleDash();
}
private void OnTriggerEnter2D(Collider2D col)
{
if (col.gameObject.tag == "ground")
{
grounded = true;
}
}
void playermove()
{
float axixX = Input.GetAxis("Horizontal");
transform.Translate(new Vector3(axixX, 0) * Time.deltaTime * speed);
if (Input.GetButton("Horizontal"))
{
isRunning = true;
}
else
{
isRunning = false;
}
anim.SetBool("isRunning", isRunning);
}
void HandleJump()
{
if (Input.GetKeyDown(KeyCode.Space))
{
if (grounded == true)
{
GetComponent<Rigidbody2D>().velocity = new Vector2(GetComponent<Rigidbody2D>().velocity.x, jumpspd);
grounded = false;
}
}
}
void HandleDash()
{
if (Input.GetKeyDown(KeyCode.LeftShift))
{
StartCoroutine(dash());
}
}
void HandleFlip()
{
if (Input.GetKeyDown(KeyCode.A))
{
ren.flipX = true;
}
if (Input.GetKeyDown(KeyCode.D))
{
ren.flipX = false;
}
}
IEnumerator dash()
{
if (canDash == true)
{
canDash = false;
anim.SetBool("dashing", true);
if (ren.flipX == true)
{
GetComponent<Rigidbody2D>().velocity = new Vector2(-jumpspd / 2, GetComponent<Rigidbody2D>().velocity.y);
}
else
{
GetComponent<Rigidbody2D>().velocity = new Vector2(jumpspd / 2, GetComponent<Rigidbody2D>().velocity.y);
}
yield return new WaitForSeconds(0.5f);
anim.SetBool("dashing", false);
canDash = true;
}
}
}