Esempio n. 1
0
    void Update()
    {
        bulletRotateTime += Time.deltaTime;

        // 탄속 변경
        if (bulletSpeedState.Equals(BulletSpeedState.BULLETSPEEDSTATE_ACCELERATING))
        {
            bulletMoveSpeed += bulletAccelerationMoveSpeed;
            if (!bulletAccelerationMoveSpeedMax.Equals(0.0f))
            {
                if (bulletMoveSpeed >= bulletAccelerationMoveSpeedMax)
                {
                    bulletMoveSpeed = bulletAccelerationMoveSpeedMax;
                }
            }
        }
        else if (bulletSpeedState.Equals(BulletSpeedState.BULLETSPEEDSTATE_DECELERATING))
        {
            bulletMoveSpeed -= bulletDecelerationMoveSpeed;
            if (!bulletDecelerationMoveSpeedMin.Equals(0.0f))
            {
                if (bulletMoveSpeed <= bulletDecelerationMoveSpeedMin)
                {
                    bulletMoveSpeed = bulletDecelerationMoveSpeedMin;
                }
            }
            else
            {
                if (bulletMoveSpeed <= 0.0f)
                {
                    bulletMoveSpeed = 0.0f;
                }
            }
        }
        else if (bulletSpeedState.Equals(BulletSpeedState.BULLETSPEEDSTATE_LOOP))
        {
            if (bulletMoveSpeedLoopBool.Equals(true))
            {
                bulletMoveSpeed += bulletAccelerationMoveSpeed;
                if (bulletMoveSpeed >= bulletAccelerationMoveSpeedMax)
                {
                    bulletMoveSpeedLoopBool = false;
                }
            }
            else
            {
                bulletMoveSpeed -= bulletDecelerationMoveSpeed;
                if (bulletMoveSpeed <= bulletDecelerationMoveSpeedMin)
                {
                    bulletMoveSpeedLoopBool = true;
                }
            }
        }
        else if (bulletSpeedState.Equals(BulletSpeedState.BULLETSPEEDSTATE_LOOPONCE))
        {
            if (bulletMoveSpeedLoopBool.Equals(true))
            {
                bulletMoveSpeed += bulletAccelerationMoveSpeed;
                if (bulletMoveSpeed >= bulletAccelerationMoveSpeedMax)
                {
                    bulletMoveSpeedLoopBool = false;
                    bulletSpeedState        = BulletSpeedState.BULLETSPEEDSTATE_DECELERATING;
                }
            }
            else
            {
                bulletMoveSpeed -= bulletDecelerationMoveSpeed;
                if (bulletMoveSpeed <= bulletDecelerationMoveSpeedMin)
                {
                    bulletMoveSpeedLoopBool = true;
                    bulletSpeedState        = BulletSpeedState.BULLETSPEEDSTATE_ACCELERATING;
                }
            }
        }

        // 탄도 변경 (지속 증감)
        if (!bulletRotateSpeed.Equals(0.0f))
        {
            if (bulletRotateState.Equals(BulletRotateState.BULLETROTATESTATE_NORMAL))
            {
                transform.Rotate(Vector3.forward * bulletRotateSpeed * Time.deltaTime);
            }
            else if (bulletRotateState.Equals(BulletRotateState.BULLETROTATESTATE_LIMIT))
            {
                transform.Rotate(Vector3.forward * bulletRotateSpeed * Time.deltaTime);
                if (bulletRotateTime >= bulletRotateLimit)
                {
                    bulletRotateSpeed = 0.0f;
                }
            }
            else if (bulletRotateState.Equals(BulletRotateState.BULLETROTATESTATE_ROTATEAROUND))
            {
                RotateAround(bulletDestination);
            }
        }
        // 탄도 변경 (지속적으로 대상을 향해 바라보기)
        else if (bulletRotateState.Equals(BulletRotateState.BULLETROTATESTATE_LOOKAT))
        {
            bulletDestination = initializeBullet.GetAimedBulletDestination(initializeBullet.targetObject.transform.position);
            float angle = Mathf.Atan2(movingBullet.bulletDestination.y, movingBullet.bulletDestination.x) * Mathf.Rad2Deg;
            if (initializeBullet.bulletType.Equals(BulletType.BULLETTYPE_LASER_MOVE))
            {
                ChangeRotateAngle(angle - 180.0f);
            }
            else
            {
                ChangeRotateAngle(angle - 90.0f);
            }
        }

        // 탄막 이동
        if (initializeBullet.bulletType.Equals(BulletType.BULLETTYPE_NORMAL))
        {
            transform.Translate(Vector2.up * bulletMoveSpeed * Time.deltaTime);
        }
        else
        {
            transform.Translate(Vector2.right * bulletMoveSpeed * Time.deltaTime);
        }

        // 탄막 그레이즈
        if (isGrazing.Equals(true))
        {
            grazeDelay += Time.deltaTime;
            if (grazeDelay >= 0.1f)
            {
                playerDatabase.grazeCount++;
                grazeDelay = 0.0f;
            }
        }
        else
        {
            grazeDelay = 0.0f;
        }

        // 콜라이더 활성화
        if (!initializeBullet.bulletType.Equals(BulletType.BULLETTYPE_LASER_HOLD) && Vector2.Distance(transform.position, playerObject.transform.position) <= 0.5f)
        {
            if (!circleCollider2D.Equals(null))
            {
                circleCollider2D.enabled = true;
            }
            else if (!capsuleCollider2D.Equals(null))
            {
                capsuleCollider2D.enabled = true;
            }
            else if (!boxCollider2D.Equals(null))
            {
                boxCollider2D.enabled = true;
            }
        }
        else
        {
            Vector3 targetScreenPos = Camera.main.WorldToScreenPoint(gameObject.transform.position);
            if (((targetScreenPos.x > Screen.width || targetScreenPos.x < 0.0f) || (targetScreenPos.y > Screen.height || targetScreenPos.y < 0.0f)) ||
                (gameManager.isCleared.Equals(true)))
            {
                if (!circleCollider2D.Equals(null))
                {
                    circleCollider2D.enabled = true;
                }
                else if (!capsuleCollider2D.Equals(null))
                {
                    capsuleCollider2D.enabled = true;
                }
                else if (!boxCollider2D.Equals(null))
                {
                    boxCollider2D.enabled = true;
                }
            }
        }
    }