using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CharacterMove : MonoBehaviour
{
// Start is called before the first frame update
public float moveSpeed;
private Animator Anim;
private Rigidbody2D rb2D;
float moveHorizontal;
public bool facingRight;
public float jumpForce;
public bool İsGrounded;
public bool canDoubleJump;
void Start()
{
moveSpeed = 5;
moveHorizontal = Input.GetAxis("Horizontal");
Anim = GetComponent<Animator>();
rb2D = GetComponent<Rigidbody2D>();
}
// Update is called once per frame
void Update()
{
CharacterMovement();
CharacterAnimation();
CharacterAttack();
CharacterRunAttack();
CharacterJump();
}
void CharacterMovement()
{
moveHorizontal = Input.GetAxis("Horizontal");
rb2D.velocity = new Vector2(moveHorizontal * moveSpeed, rb2D.velocity.y);
}
void CharacterAnimation()
{
if (moveHorizontal > 0)
{
Anim.SetBool("İsRunning", true);
}
if (moveHorizontal == 0)
{
Anim.SetBool("İsRunning", false);
}
if (moveHorizontal < 0)
{
Anim.SetBool("İsRunning", true);
}
if (facingRight == false && moveHorizontal > 0)
{
CharacterFlip();
}
if (facingRight == true && moveHorizontal < 0)
{
CharacterFlip();
}
}
void CharacterFlip()
{
facingRight = !facingRight;
Vector3 scaler = transform.localScale;
scaler.x *= -1;
transform.localScale = scaler;
}
void CharacterAttack()
{
if (Input.GetKeyDown(KeyCode.E) && moveHorizontal == 0)
{
Anim.SetTrigger("İsAttack");
}
}
void CharacterRunAttack()
{
if (Input.GetKeyDown(KeyCode.E) && moveHorizontal > 0 || Input.GetKeyDown(KeyCode.E) && moveHorizontal < 0)
{
Anim.SetTrigger("İsRunAttack");
}
}
void CharacterJump()
{
if (Input.GetKeyDown(KeyCode.Space))
{
Anim.SetBool("İsJumping", true);
if (İsGrounded)
{
rb2D.velocity = Vector2.up * jumpForce;
canDoubleJump = true;
}
else if (canDoubleJump)
{
jumpForce = jumpForce / 1.5f;
rb2D.velocity = Vector2.up * jumpForce;
canDoubleJump = false;
jumpForce = jumpForce * 1.5;
}
}
}
void OnCollisionEnter2D(Collision2D col)
{
Anim.SetBool("İsJumping", false);
if (col.gameObject.tag == "Grounded")
{
İsGrounded = true;
}
}
void OnCollisionStay2D(Collision2D col)
{
Anim.SetBool("İsJumping", false);
if (col.gameObject.tag == "Grounded")
{
İsGrounded = true;
}
}
void OnCollisionExit2D(Collision2D col)
{
Anim.SetBool("İsJumping", true);
if (col.gameObject.tag == "Grounded")
{
İsGrounded = false;
}
}
}