using UnityEngine;
using UnityEditor;
using UnityEngine.InputSystem;
public class PlayerMovement : MonoBehaviour
{
[Header("Physics")]
private Rigidbody2D rb;
[SerializeField] private float speed;
[SerializeField] private float dash;
[Header("Animation")]
private Animator anim;
[SerializeField] private Vector2 lastDir;
[SerializeField] private float ROT;
[Header("Inputs")]
[SerializeField] private Vector2 _moveInput;
[SerializeField] private Vector2 _lookInput;
[SerializeField] private bool _attack;
private InputHandler ih; //InputHandler
private void Start()
{
rb = GetComponent<Rigidbody2D>();
anim = GetComponentInChildren<Animator>();
ih = InputHandler.Instance;
}
private void FixedUpdate()
{
Inputs();
Animation();
Move();
}
private void Inputs()
{
_moveInput = ih.moveInput;
_lookInput = ih.lookInput;
_attack = ih.attackInput;
}
private void Move()
{
rb.MovePosition(rb.position + new Vector2(_moveInput.x, _moveInput.y) * speed * Time.fixedDeltaTime);
}
private void Animation()
{
if (_moveInput.magnitude > 0)
{
lastDir = _moveInput;
}
anim.SetFloat("MoveX", _moveInput.x);
anim.SetFloat("MoveY", _moveInput.y);
anim.SetFloat("MoveMagnitude", _moveInput.magnitude);
anim.SetFloat("LastMoveX", lastDir.x);
anim.SetFloat("LastMoveY", lastDir.y);
}
public void OnAttack(float dashAngle)
{
Vector3 vector = new Vector3(Mathf.Cos(dashAngle), Mathf.Sin(dashAngle), 0);
Debug.Log(dashAngle);
Debug.Log(vector);
rb.AddForce(vector * dash, ForceMode2D.Impulse);
}
}