Advertisement
flidiii

Untitled

Jan 2nd, 2023
18
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.83 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4.  
  5. public class SkeletonController : MonoBehaviour
  6. {
  7. [SerializeField] private int hp;
  8. [SerializeField] private int damage;
  9. [SerializeField] private GameObject player;
  10. [SerializeField] private float speed;
  11. [SerializeField] private Transform rayPosition;
  12. [SerializeField] private float EndAttack;
  13. [SerializeField] private Sprite DeathSprite;
  14. [SerializeField] private float DistanceToPlayer;
  15.  
  16. private SpriteRenderer spriteRenderer;
  17. private float StartPos;
  18. private float EndPos;
  19. private Animator animator;
  20. private Rigidbody2D rb2d;
  21. private float StartAttack;
  22. private float DistanceAttackPlayer = 2f;
  23. private bool isDeath = false;
  24. private bool isAttack = false;
  25. private int DeathCount = 0;
  26. private new BoxCollider2D collider2D;
  27. void Start()
  28. {
  29. rb2d = GetComponent<Rigidbody2D>();
  30. animator = GetComponent<Animator>();
  31. spriteRenderer = GetComponent<SpriteRenderer>();
  32. collider2D = GetComponent<BoxCollider2D>();
  33. StartPos = transform.position.x;
  34. EndPos = transform.position.x;
  35. }
  36.  
  37. void Update()
  38. {
  39. if(hp <= 0){
  40. if(isDeath == false){
  41. if(DeathCount == 0){
  42. animator.SetInteger("state",4);
  43. DeathCount++;
  44. }
  45. }
  46. }
  47. else{
  48. RaycastHit2D hit = Physics2D.Raycast(rayPosition.position,Vector2.right,2f);
  49. if(PlayerController.isDeath == false){
  50. if(Vector3.Distance(transform.position, player.transform.position) > DistanceToPlayer){
  51. animator.SetInteger("state",1);
  52. }
  53. else{
  54. if(isAttack == false){
  55. animator.SetInteger("state",2);
  56.  
  57. Vector2 vector2Saw = new Vector2(player.transform.position.x, transform.position.y);
  58.  
  59. if(Vector3.Distance(transform.position, player.transform.position) > DistanceAttackPlayer){
  60. transform.position = Vector3.MoveTowards(transform.position, vector2Saw, speed * Time.deltaTime);
  61. }
  62.  
  63. StartPos = transform.position.x;
  64.  
  65. if (StartPos < EndPos) {
  66. animator.SetInteger("state",5);
  67. hit = Physics2D.Raycast(rayPosition.position,Vector2.right,2f);
  68. rayPosition.localRotation = Quaternion.Euler(0,0,0);
  69. Debug.DrawRay(rayPosition.position,Vector3.right,Color.green,1.5f);
  70. EndPos = StartPos;
  71. }
  72. else{
  73. animator.SetInteger("state",2);
  74. rayPosition.localRotation = Quaternion.Euler(0,180f,0);
  75. hit = Physics2D.Raycast(rayPosition.position,Vector2.left,2f);
  76. Debug.DrawRay(rayPosition.position,Vector3.left,Color.green,1.5f);
  77. EndPos = StartPos;
  78. }
  79. }
  80. if(Vector3.Distance(transform.position, player.transform.position) <= DistanceAttackPlayer && PlayerController.isDeath == false){
  81. isAttack = true;
  82. if(StartAttack <= 0){
  83. if (transform.position.x > player.transform.position.x) {
  84. transform.rotation = Quaternion.Euler(0,180f,0);
  85. hit = Physics2D.Raycast(rayPosition.position,Vector2.left,2f);
  86.  
  87. Debug.DrawRay(rayPosition.position,Vector3.left,Color.green,1.5f);
  88. }
  89. else{
  90. transform.rotation = Quaternion.Euler(0,0,0);
  91. hit = Physics2D.Raycast(rayPosition.position,Vector2.right,2f);
  92. rayPosition.localRotation = Quaternion.Euler(0,180f,0);
  93. rayPosition.localRotation = Quaternion.Euler(0,0,0);
  94. Debug.DrawRay(rayPosition.position,Vector3.right,Color.green,1.5f);
  95. }
  96. animator.SetInteger("state",3);
  97. hit.collider.GetComponent<PlayerController>().takeDamage(damage);
  98. StartAttack = EndAttack;
  99. Debug.Log(hit.collider.tag);
  100.  
  101. }
  102. else{
  103. if(AnimationIsPlaying("Attack") == true){
  104. animator.SetInteger("state",1);
  105. }
  106. StartAttack -= Time.deltaTime;
  107. }
  108. }
  109. else{
  110. isAttack = false;
  111. }
  112. }
  113. }
  114. else{
  115. animator.SetInteger("state",1);
  116. }
  117. }
  118.  
  119. Debug.DrawRay(transform.position,Vector3.right,Color.green,1.5f);
  120. }
  121.  
  122. public void takeDamage(int damage){
  123. hp -= damage;
  124. }
  125.  
  126. public bool AnimationIsPlaying(string animationName){
  127. var animatorStateInfo = animator.GetCurrentAnimatorStateInfo(0);
  128. if(animatorStateInfo.IsName(animationName)){
  129. return true;
  130. }
  131. return false;
  132. }
  133.  
  134. public void Death(){
  135. animator.enabled = false;
  136. spriteRenderer.sprite = DeathSprite;
  137. rb2d.gravityScale = 0;
  138. collider2D.isTrigger = true;
  139. spriteRenderer.sortingOrder = 0;
  140. }
  141. }
  142.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement