Nenhuma descrição
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

Hero.cs 2.1KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.SceneManagement;
  5. using UnityEngine.Tilemaps;
  6. public class Hero : MonoBehaviour
  7. {
  8. public float m_MoveSpeed;
  9. public Animator animator;
  10. Rigidbody2D rb;
  11. public enum PlayerState { Alive, Dead }
  12. public PlayerState playerState = PlayerState.Alive;
  13. public Vector2 lookFacing;
  14. public Vector2 respawnPoint;
  15. float dashCooldown = 0f;
  16. public bool dead = false;
  17. void Start() {
  18. rb = GetComponent<Rigidbody2D>();
  19. animator.SetBool("alive", true);
  20. }
  21. void Update ()
  22. {
  23. if(playerState == PlayerState.Dead) {
  24. rb.velocity = Vector2.zero;
  25. return;
  26. }
  27. Vector3 tryMove = Vector3.zero;
  28. if (Input.GetKey(KeyCode.LeftArrow))
  29. tryMove += Vector3Int.left;
  30. if (Input.GetKey(KeyCode.RightArrow))
  31. tryMove += Vector3Int.right;
  32. if (Input.GetKey(KeyCode.UpArrow))
  33. tryMove += Vector3Int.up;
  34. if (Input.GetKey(KeyCode.DownArrow))
  35. tryMove += Vector3Int.down;
  36. rb.velocity = Vector3.ClampMagnitude(tryMove, 1f) * m_MoveSpeed;
  37. animator.SetBool("moving", tryMove.magnitude > 0);
  38. if (Mathf.Abs(tryMove.x) > 0) {
  39. animator.transform.localScale = tryMove.x < 0f ? new Vector3(-1f, 1f, 1f) : new Vector3(1f, 1f, 1f);
  40. }
  41. if(tryMove.magnitude > 0f) {
  42. lookFacing = tryMove;
  43. }
  44. dashCooldown = Mathf.MoveTowards(dashCooldown, 0f, Time.deltaTime);
  45. if (Input.GetButtonDown("Jump")) {
  46. if(dashCooldown <= 0f && tryMove.magnitude > 0) {
  47. var hit = Physics2D.Raycast(transform.position + Vector3.up * .5f, tryMove.normalized, 3.5f, 1 << LayerMask.NameToLayer("Wall"));
  48. float distance = 3f;
  49. if(hit.collider != null) {
  50. distance = hit.distance - .5f;
  51. }
  52. transform.position = rb.position + Vector2.ClampMagnitude(tryMove, 1f) * distance;
  53. }
  54. }
  55. animator.SetBool("dash_ready", dashCooldown <= 0f);
  56. }
  57. public void LevelComplete() {
  58. Destroy(gameObject);
  59. }
  60. }