IEnumerator CorMoveOctopus()
    {
        float fixedDeltatime = Time.fixedDeltaTime;

        while (true)
        {
            //if (Mathf.Abs(Vector3.Distance(transform.localPosition, myStartPos)) > distance)
            //{
            //    gameObject.SetActive(false);
            //    yield break;
            //}
            if (transform.localPosition.y >= distance)
            {
                gameObject.SetActive(false);
                yield break;
            }

            switch (state)
            {
            case State.Up:
                rigid2D.velocity = Vector3.zero;
                transform.Translate(direction * fixedDeltatime * moveSpeed * 1.2f, Space.World);
                break;

            case State.Down:
                transform.Translate(Vector3.down * fixedDeltatime * moveSpeed * 0.8f, Space.World);
                break;

            case State.Fire:
                OctopusBullet octopus = null;
                for (int i = 0; i < octopusBullets.Count; i++)
                {
                    octopus = octopusBullets[i];
                    if (octopus.gameObject.activeSelf == false)
                    {
                        octopus.transform.position = transform.position;
                        octopus.gameObject.SetActive(true);
                        octopus.InitBullet(bulletSpeed, bulletReach, Vector3.left);
                    }
                }
                rigid2D.AddForce(Vector3.right * 0.03f, ForceMode2D.Impulse);
                break;

            case State.Idle:
                transform.Translate(Vector3.down * fixedDeltatime * moveSpeed * 0.1f, Space.World);
                break;

            default:
                break;
            }
            yield return(new WaitForFixedUpdate());
        }
    }
Beispiel #2
0
    private void MoveStop()
    {
        moving    = true;
        moveSpeed = 0;
        OctopusBullet bullet = null;

        for (int i = 0; i < bullets.Count; i++)
        {
            bullet = bullets[i];
            if (bullet.gameObject.activeSelf == false)
            {
                bullet.transform.position = transform.position;
                bullet.gameObject.SetActive(true);
                bullet.InitBullet(bulletSpeed, distance,
                                  Quaternion.Euler(0, 0, Random.Range(-45, 46)) * Vector3.down);
                Invoke("SetMove", 1.0f);
                return;
            }
        }
        Invoke("SetMove", 1.0f);
    }