Advertisement
Guest User

RunAwayEnemi

a guest
Jun 25th, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.43 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4.  
  5. public class RunAwayEnemi : MonoBehaviour
  6. {
  7. public int speedX = 0;
  8. public int speedY = 0;
  9.  
  10. private float generalSpeed = 0.014f;
  11.  
  12. private Animator animController = null;
  13. private Character character = null; //character este personaje
  14.  
  15. public GameObject Enemi = null;
  16. public Character EnemiCharacter = null; //character del target
  17.  
  18. // Use this for initialization
  19. void Start ()
  20. {
  21. animController = this.GetComponent<Animator>();
  22. character = this.GetComponent<Character>();
  23.  
  24. Enemi = GameObject.Find("Principal");
  25.  
  26. //target != null
  27. if (Enemi)
  28. {
  29. EnemiCharacter = Enemi.GetComponent<Character>();
  30. }
  31. else
  32. {
  33. Debug.LogError("Enemi is NULL");
  34. }
  35.  
  36. generalSpeed += Random.Range(-0.004f, 0.004f);
  37. }
  38.  
  39. // Update is called once per frame
  40. void Update()
  41. {
  42. //if (target != null && targetCharacter != null && character != null && character.GetIsAlive())
  43. if (Enemi && EnemiCharacter && character && character.GetIsAlive())
  44. {
  45. UpdateMovementDirectionByEnemi();
  46. }
  47. else
  48. {
  49. speedX = 0;
  50. speedY = 0;
  51. }
  52.  
  53. UpdateAnimation();
  54. UpdatePosition();
  55.  
  56. }
  57.  
  58. void UpdateMovementDirectionByEnemi()
  59. {
  60. //Vivo
  61. if (EnemiCharacter.GetIsAlive())
  62. {
  63. Vector3 currentPos = this.transform.position;
  64. Vector3 EnemiPos = Enemi.transform.position;
  65.  
  66. Vector3 deltaPos;
  67.  
  68. deltaPos.x = EnemiPos.x - transform.position.x;
  69. deltaPos.y = EnemiPos.y - currentPos.y;
  70.  
  71. float margin = generalSpeed * 2 + 0.2f;
  72.  
  73. // Eje X
  74. if (deltaPos.x > margin)
  75. {
  76. speedX = 1;
  77. }
  78. else if (deltaPos.x < -margin)
  79. {
  80. speedX = -1;
  81. }
  82. else
  83. {
  84. speedX = 0;
  85. }
  86.  
  87. // Eje Y
  88. if (deltaPos.y > margin)
  89. {
  90. speedY = 1;
  91. }
  92. else if (deltaPos.y < -margin)
  93. {
  94. speedY = -1;
  95. }
  96. else
  97. {
  98. speedY = 0;
  99. }
  100. }
  101. else
  102. {
  103. speedX = 0;
  104. speedY = 0;
  105. }
  106.  
  107. private void UpdateAnimation()
  108. {
  109. if (animController)
  110. {
  111. animController.SetInteger("speedX", speedX);
  112. animController.SetInteger("speedY", speedY);
  113. }
  114. else
  115. {
  116. Debug.LogError("animController is NULL");
  117. }
  118. }
  119.  
  120. private void UpdatePosition()
  121. {
  122. Vector2 currentSpeed;
  123.  
  124. currentSpeed.x = speedX;
  125. currentSpeed.y = speedY;
  126.  
  127. //Transformarlo en unitario
  128. currentSpeed.Normalize();
  129.  
  130. //Le damos magnitud
  131. currentSpeed *= generalSpeed;
  132.  
  133. //Hacemos el cambio de posición
  134. Vector3 currentPos = transform.position;
  135.  
  136. currentPos.x += currentSpeed.x;
  137. currentPos.y += currentSpeed.y;
  138.  
  139. transform.position = currentPos;
  140. }
  141. }
  142. }
  143. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement