예제 #1
0
 void Start()
 {
     //transform.RotateAround(transform.position, Vector3.forward, Random.Range(0, 360));
     transform.RotateAround(transform.position, Vector3.forward, -30);
     Physics2D.queriesStartInColliders = false;
     currentState = TriangleStates.Spinning;
     RandomizeSpinStopTime();
 }
예제 #2
0
 // Update is called once per frame
 void FixedUpdate()
 {
     if (currentState == TriangleStates.Spinning)
     {
         if (Time.time < spinStopTime)
         {
             transform.RotateAround(transform.position, Vector3.forward, spinRate);
         }
         else
         {
             // make this a little smarter
             // so you don't just spin and face a wall
             currentState = TriangleStates.ChargeUp;
             chargeTime   = Time.time + chargeUpTime;
         }
     }
     else if (currentState == TriangleStates.ChargeUp)
     {
         if (Time.time > chargeTime)
         {
             // fully charged
             currentState = TriangleStates.Dash;
         }
     }
     else if (currentState == TriangleStates.Dash)
     {
         transform.position = Vector2.MoveTowards(transform.position, transform.position + transform.up, dashMultiplier * moveSpeed * Time.fixedDeltaTime);
         RaycastHit2D hit;
         LayerMask    mask = LayerMask.NameToLayer("Wall");
         hit = Physics2D.Raycast(transform.position, transform.up, 6f, ~mask);
         //Debug.DrawRay(transform.position, transform.up, Color.red, 10);
         //Debug.Log("hit dist: " + hit.distance);
         if (hit.collider != null)
         {
             //Debug.Log("Hit " + hit.collider.gameObject);
             if (hit.distance < 6f)
             {
                 currentState = TriangleStates.Decel;
                 decelSpeed   = moveSpeed * dashMultiplier;
             }
         }
     }
     else if (currentState == TriangleStates.Decel)
     {
         decelSpeed        *= deceleration;
         decelSpeed        -= 0.03f; // decay so your speed gets to 0
         transform.position = Vector2.MoveTowards(transform.position, transform.position + transform.up, decelSpeed * Time.fixedDeltaTime);
         if (decelSpeed < 0)
         {
             currentState = TriangleStates.Spinning;
             RandomizeSpinStopTime();
         }
     }
 }