Example #1
0
    void HeatSeek()
    {
        float dist = EssentiaFunctions.getRange(p, gameObject);

        if (dist < 2 && isSeek == false)
        {
            isSeek                = true;
            rb.velocity           = Vector2.zero;
            transform.eulerAngles = EssentiaFunctions.getAngleTowardsPoint(p, gameObject);
            float   newDir      = transform.eulerAngles.z * (Mathf.PI / 180);
            Vector2 forcevector = new Vector2(Mathf.Cos(newDir), Mathf.Sin(newDir));
            rb.AddForce(forcevector * speed, ForceMode2D.Impulse);
        }
    }
 private void CombatBehaviour()
 {
     targetAngle = EssentiaFunctions.getAngleTowardsPoint(p, gameObject).z;
     targetAngle = targetAngle < 0 ? targetAngle + 360 : targetAngle;
     d           = EssentiaFunctions.getRange(p, gameObject);
     if (flightode == Flightodes.StraightAndSeek)
     {
         if (d < 10 && (targetAngle >= 170 && targetAngle < 190) && keyTimer2.Finished == true)
         {
             Fire();
         }
     }
     if (flightode == Flightodes.Straight)
     {
         if (d < 20 && (targetAngle >= 170 && targetAngle <= 190))
         {
             Fire();
         }
     }
     if (flightode == Flightodes.CurveUP || flightode == Flightodes.CurveDOWN || flightode == Flightodes.TakeOFF || flightode == Flightodes.TakeDOWN)
     {
         targetAngle = EssentiaFunctions.getAngleTowardsPoint(p, gameObject).z;
         if (transform.eulerAngles.z < 360 && transform.eulerAngles.z > 270)
         {
             targetAngle = targetAngle + 360 - transform.eulerAngles.z;
         }
         if (transform.eulerAngles.z > 0 && transform.eulerAngles.z < 90)
         {
             targetAngle = targetAngle - transform.eulerAngles.z;
         }
         if (EssentiaFunctions.getRange(p, gameObject) < 10 && ((targetAngle > 150 && targetAngle <= 180) || (targetAngle < -150 && targetAngle > -180)) && keyTimer1.Finished == true)
         {
             Fire();
         }
     }
 }
 private void Initialize()
 {
     rb.velocity   = Vector2.zero;
     isInitialized = true;
     if (flightode == Flightodes.CurveUP)
     {
         Vector3 initialAngle = new Vector3(0, 0, 45f);
         transform.eulerAngles = initialAngle;
         keyTimer1.Duration    = 0.2f;
         keyTimer1.Run();
         for (int i = 0; i < 3; i++)
         {
             canFire.Add(false);
         }
     }
     if (flightode == Flightodes.CurveDOWN)
     {
         gameObject.GetComponent <SpriteRenderer>().flipY = true;
         Vector3 initialAngle = new Vector3(0, 0, 315f);
         transform.eulerAngles = initialAngle;
         keyTimer1.Duration    = 0.2f;
         keyTimer1.Run();
         for (int i = 0; i < 3; i++)
         {
             canFire.Add(true);
         }
     }
     if (flightode == Flightodes.TakeOFF)
     {
         forceVector        = Vector2.right;
         keyTimer1.Duration = 0.15f;
         keyTimer1.Run();
         transform.eulerAngles = new Vector3(0, 0, 359);
         for (int i = 0; i < 2; i++)
         {
             canFire.Add(true);
         }
     }
     if (flightode == Flightodes.TakeDOWN)
     {
         forceVector        = Vector2.right;
         keyTimer1.Duration = 0.15f;
         keyTimer1.Run();
         transform.eulerAngles = new Vector3(0, 0, 1);
         for (int i = 0; i < 2; i++)
         {
             canFire.Add(true);
         }
     }
     if (flightode == Flightodes.StraightAndSeek)
     {
         transform.eulerAngles = new Vector3(0, 0, EssentiaFunctions.getAngleTowardsPoint(p, gameObject).z - 180);
         keyTimer1.Duration    = 3f;
         keyTimer2             = gameObject.AddComponent <Timer>();
         keyTimer2.Duration    = 0.2f;
         for (int i = 0; i < 3; i++)
         {
             canFire.Add(true);
         }
         keyTimer1.Run();
         keyTimer2.Run();
     }
     if (flightode == Flightodes.Straight)
     {
         transform.eulerAngles = new Vector3(0, 0, 0);
         canFire.Add(true);
     }
 }
 private void MovementBehaviour()
 {
     if (enemyObject.isAlive == true)
     {
         if (flightode == Flightodes.CurveUP)
         {
             if (transform.eulerAngles.z != 315)
             {
                 transform.Rotate(new Vector3(0, 0, -rotationPower) * Time.deltaTime);
             }
             forceVector = new Vector2(Mathf.Cos(transform.eulerAngles.z * (Mathf.PI / 180)), Mathf.Sin(transform.eulerAngles.z * (Mathf.PI / 180)));
             rb.velocity = forceVector * -1 * velocityMultiplier * Time.deltaTime;
         }
         if (flightode == Flightodes.CurveDOWN)
         {
             if (transform.eulerAngles.z != 45)
             {
                 transform.Rotate(new Vector3(0, 0, +rotationPower) * Time.deltaTime);
             }
             forceVector = new Vector2(Mathf.Cos(transform.eulerAngles.z * (Mathf.PI / 180)), Mathf.Sin(transform.eulerAngles.z * (Mathf.PI / 180)));
             rb.velocity = forceVector * -1 * velocityMultiplier * Time.deltaTime;
         }
         if (flightode == Flightodes.TakeOFF)
         {
             rb.velocity = -1 * velocityMultiplier * Time.deltaTime * forceVector;
             if (EssentiaFunctions.getRange(p, gameObject) < 10 && transform.eulerAngles.z > 315)
             {
                 transform.Rotate(new Vector3(0, 0, -rotationPower * 1f) * Time.deltaTime);
                 forceVector = new Vector2(Mathf.Cos(transform.eulerAngles.z * (Mathf.PI / 180)), Mathf.Sin(transform.eulerAngles.z * (Mathf.PI / 180)));
                 rb.velocity = forceVector * -1 * velocityMultiplier * Time.deltaTime;
             }
         }
         if (flightode == Flightodes.TakeDOWN)
         {
             rb.velocity = -1 * velocityMultiplier * Time.deltaTime * forceVector;
             if (EssentiaFunctions.getRange(p, gameObject) < 10 && transform.eulerAngles.z < 45)
             {
                 transform.Rotate(new Vector3(0, 0, +rotationPower * 1f) * Time.deltaTime);
                 forceVector = new Vector2(Mathf.Cos(transform.eulerAngles.z * (Mathf.PI / 180)), Mathf.Sin(transform.eulerAngles.z * (Mathf.PI / 180)));
                 rb.velocity = forceVector * -1 * velocityMultiplier * Time.deltaTime;
             }
         }
         if (flightode == Flightodes.StraightAndSeek)
         {
             if (keyTimer1.Finished && tolook == true)
             {
                 tolook = false;
                 print(transform.eulerAngles.z);
                 secondTurn = EssentiaFunctions.getAngleTowardsPoint(p, gameObject).z + 180;
             }
             if (tolook == false)
             {
                 if (secondTurn > 270)
                 {
                     transform.Rotate(new Vector3(0, 0, -rotationPower * 1f) * Time.deltaTime);
                 }
                 if (secondTurn < 90)
                 {
                     transform.Rotate(new Vector3(0, 0, +rotationPower * 1f) * Time.deltaTime);
                 }
             }
             forceVector = new Vector2(Mathf.Cos(transform.eulerAngles.z * (Mathf.PI / 180)), Mathf.Sin(transform.eulerAngles.z * (Mathf.PI / 180)));
             rb.velocity = -1 * velocityMultiplier * Time.deltaTime * forceVector;
         }
         if (flightode == Flightodes.Straight)
         {
             rb.velocity = -1 * Vector2.right * Time.deltaTime * velocityMultiplier;
         }
     }
 }