Loading

Paste #p1vmrvwvx

  1. using UnityEngine;
  2. using System.Collections;
  3.  
  4. public class Mover : MonoBehaviour
  5. {
  6.  
  7.     public float delay = 2;
  8.     public bool vertical;
  9.     public bool negativeDirection;
  10.     public float speed;
  11.  
  12.     public bool continueMove = false;
  13.  
  14.     bool stopOnce = false;
  15.     bool startedOnce = false;
  16.  
  17.     bool playerOnPlatform = true;
  18.  
  19.     public int hits = 0;
  20.  
  21.     BoxCollider2D test;
  22.  
  23.     IEnumerator ExecuteAfterTime(float time, string type)
  24.     {
  25.  
  26.         yield return new WaitForSeconds(time);
  27.  
  28.         if (type == "1hitStop")
  29.         {
  30.             continueMove = true;
  31.             stopOnce = true;
  32.         }
  33.  
  34.         if (type == "startOnce")
  35.         {
  36.             continueMove = true;
  37.             startedOnce = true;
  38.         }
  39.  
  40.     }
  41.  
  42.     void Start()
  43.     {
  44.         test = gameObject.GetComponent<BoxCollider2D>();
  45.  
  46.         if (negativeDirection)
  47.         {
  48.             speed *= -1;
  49.         }
  50.  
  51.  
  52.     }
  53.  
  54.     // Update is called once per frame
  55.     void FixedUpdate()
  56.     {
  57.  
  58.         if (hits == 1 && !stopOnce && playerOnPlatform)
  59.         {
  60.             continueMove = false;
  61.         }
  62.  
  63.         if (hits >= 2)
  64.         {
  65.             hits = 0;
  66.             continueMove = false;
  67.             stopOnce = false;
  68.         }
  69.  
  70.         if (continueMove)
  71.         {
  72.             if (vertical)
  73.             {
  74.                 transform.Translate(0, speed, 0, transform.parent);
  75.  
  76.             }
  77.             else
  78.             {
  79.                 transform.Translate(speed, 0, 0, transform.parent);
  80.             }
  81.         }
  82.  
  83.     }
  84.  
  85.     void OnTriggerEnter2D(Collider2D other)
  86.     {
  87.        
  88.         if (other.gameObject.name.Equals("moveStop"))
  89.         {
  90.  
  91.             speed *= -1;
  92.             hits++;
  93.         }
  94.  
  95.         if (other.gameObject.name.Equals("mainChar"))
  96.         {
  97.             if (hits == 0 && !startedOnce)
  98.             {
  99.                 test.enabled = true;
  100.                 StartCoroutine(ExecuteAfterTime(0.5f, "startOnce"));
  101.             }
  102.         }
  103.  
  104.     }
  105.  
  106.     void OnTriggerStay2D(Collider2D other)
  107.     {
  108.         if (other.gameObject.name.Equals("mainChar"))
  109.         {
  110.             playerOnPlatform = true;
  111.         }
  112.     }
  113.  
  114.     void OnTriggerExit2D(Collider2D other)
  115.     {
  116.         if (other.gameObject.name.Equals("mainChar"))
  117.         {
  118.             playerOnPlatform = false;
  119.             startedOnce = false;
  120.  
  121.             if (hits == 1 && !stopOnce)
  122.             {
  123.                 continueMove = false;
  124.                 StartCoroutine(ExecuteAfterTime(delay, "1hitStop"));
  125.                 startedOnce = false;
  126.             }
  127.  
  128.         }
  129.  
  130.     }
  131.  
  132. }