Inheritance: MonoBehaviour
    void PlaceBlock(Vector2 position)
    {
        float randomBlockType = Random.value;

        if (randomBlockType < ConfigurationUtils.StandardBlockProbability)
        {
            Instantiate(standardBlock, position, Quaternion.identity);
        }
        else if (randomBlockType < ConfigurationUtils.StandardBlockProbability + ConfigurationUtils.BonusBlockProbability)
        {
            Instantiate(bonusBlock, position, Quaternion.identity);
        }
        else
        {
            GameObject  pickUpBlockObject = Instantiate(pickUpBlock, position, Quaternion.identity);
            PickUpBlock pickUpBlockScript = pickUpBlockObject.GetComponent <PickUpBlock>();

            float threshold =
                ConfigurationUtils.StandardBlockProbability + ConfigurationUtils.BonusBlockProbability + ConfigurationUtils.FreezeBlockProbability;
            if (randomBlockType < threshold)
            {
                pickUpBlockScript.Effect = PickupEffect.Freezer;
            }
            else
            {
                pickUpBlockScript.Effect = PickupEffect.Speedup;
            }
        }
    }
Exemple #2
0
 public static void AddSpeedUpEffectInvoker(PickUpBlock invoker)
 {
     speedUpInvokers.Add(invoker);
     foreach (UnityAction <float, float> listener in speedUplisteners)
     {
         invoker.AddSpeedUpEffectListener(listener);
     }
 }
Exemple #3
0
 public static void AddFreezerEffectInvoker(PickUpBlock invoker)
 {
     freezerEffectInvokers.Add(invoker);
     foreach (UnityAction <float> listener in freezerEffectListeners)
     {
         invoker.AddFreezerEffectListener(listener);
     }
 }
 public static void AddFreezeInvoker(PickUpBlock invoker)
 {
     freezeEventInvoker = invoker;
     if (freezeEventListener != null)
     {
         freezeEventInvoker.AddFreezeEventListener(freezeEventListener);
     }
 }
Exemple #5
0
 public static void AddFreezerInvoker(PickUpBlock invoker)
 {
     freezerInvokerList.Add(invoker);
     if (freezerListener != null)
     {
         invoker.AddFreezerEffectListener(freezerListener);
     }
 }
 public static void AddSpeedUpEventInvoker(PickUpBlock invoker)
 {
     speedUpEventInvoker = invoker;
     if (speedUpEventListener != null)
     {
         speedUpEventInvoker.AddSpeedUpEventListener(speedUpEventListener);
         Debug.Log("Inadd");
     }
 }
    void Start()
    {
        Instantiate(paddle);


        //measure the shape of the block
        GameObject    temBlock    = Instantiate <GameObject>(prefabStdBlock);
        BoxCollider2D boxCollider = temBlock.GetComponent <BoxCollider2D>();
        float         blockWidth  = boxCollider.size.x;
        float         blockHeight = boxCollider.size.y;

        Destroy(temBlock);

        //blocks per row
        float screenWidth     = ScreenUtils.ScreenRight - ScreenUtils.ScreenLeft;
        int   blockNum        = (int)(screenWidth / blockWidth);
        float totalBlockWidth = blockWidth * blockNum;
        // 计算左边的block的中心点
        float leftBlockoffset = ScreenUtils.ScreenLeft + (screenWidth - totalBlockWidth) / 2 + blockWidth / 2;

        float   topRowOffset    = ScreenUtils.ScreenTop - (ScreenUtils.ScreenTop - ScreenUtils.ScreenBottom) / 7 - blockHeight / 2;
        Vector2 currentPosition = new Vector2(leftBlockoffset, topRowOffset);

        int layers = 3;

        for (int i = 0; i < layers; ++i)
        {
            for (int j = 0; j < blockNum; j++)
            {
                float choice = Random.value;
                if (choice < ConfigurationUtils.StandardBlockSpawnProbability)
                {
                    Instantiate(prefabStdBlock, currentPosition, Quaternion.identity);
                }
                else if (choice < ConfigurationUtils.StandardBlockSpawnProbability + ConfigurationUtils.BonusBlockSpawnProbability)
                {
                    Instantiate(prefabBonusBlock, currentPosition, Quaternion.identity);
                }
                else
                {
                    GameObject  GO          = Instantiate(prefabPickUpBlock, currentPosition, Quaternion.identity);
                    PickUpBlock pickUpBlock = GO.GetComponent <PickUpBlock>();
                    if (choice < ConfigurationUtils.StandardBlockSpawnProbability + ConfigurationUtils.BonusBlockSpawnProbability + ConfigurationUtils.FreezerBlockSpawnProbability)
                    {
                        pickUpBlock.Effect = PickupEffect.Freezer;
                    }
                    else
                    {
                        pickUpBlock.Effect = PickupEffect.Speedup;
                    }
                }
                currentPosition.x += blockWidth;
            }
            currentPosition.x  = leftBlockoffset;
            currentPosition.y -= blockHeight;
        }
    }
Exemple #8
0
    public static void AddInvoker(PickUpBlock script)
    {
        invoker = script;

        if (freezerListners != null)
        {
            invoker.AddListenerToFreezer(freezerListners);
        }
        foreach (UnityAction <int, int> item in speedListeners)
        {
            invoker.AddListenerToSpeed(item);
        }
    }
Exemple #9
0
    // Update is called once per frame
    void FixedUpdate()
    {
        if (!playerIndexSet || !prevState.IsConnected)
        {
            for (int i = 0; i < 4; ++i)
            {
                PlayerIndex  testPlayerIndex = (PlayerIndex)i;
                GamePadState testState       = GamePad.GetState(testPlayerIndex);
                if (testState.IsConnected && i == controller.playerIndex)
                {
                    playerIndex    = testPlayerIndex;
                    playerIndexSet = true;
                }
            }
        }

        prevState = state;
        state     = GamePad.GetState(playerIndex);

        if (state.ThumbSticks.Left.X != 0 || state.ThumbSticks.Left.Y != 0)
        {
            /*
             * float angle = 0;
             * if (controller.Left)
             *  angle = 270;
             * else if (controller.Right)
             *  angle = 90;
             * else if (controller.Up)
             *  angle = 0;
             * else
             *  angle = 180;*/


            horizontalAxis = state.ThumbSticks.Left.X;
            verticalAxis   = state.ThumbSticks.Left.Y;
            var tmp = new Vector3(state.ThumbSticks.Left.X, 0, state.ThumbSticks.Left.Y);
            if (Mathf.Abs(horizontalAxis) > Mathf.Abs(verticalAxis))
            {
                verticalAxis = 0;
            }
            else
            {
                horizontalAxis = 0;
            }

            forward.transform.eulerAngles = new Vector3(0, Mathf.Atan2(horizontalAxis, verticalAxis) * Mathf.Rad2Deg, 0);

            if (forward.eulerAngles.y == 270)
            {
                if (!PickableObject)
                {
                    spriteRenderer.sprite = m_sprites[1];
                }
                else
                {
                    spriteRenderer.sprite = m_sprites[2];
                }
                spriteRenderer.flipX = true;
            }
            else
            {
                spriteRenderer.flipX = false;
                if (forward.eulerAngles.y == 90)
                {
                    if (!PickableObject)
                    {
                        spriteRenderer.sprite = m_sprites[1];
                    }
                    else
                    {
                        spriteRenderer.sprite = m_sprites[2];
                    }
                }
                if (forward.eulerAngles.y == 180)
                {
                    if (!PickableObject)
                    {
                        spriteRenderer.sprite = m_sprites[3];
                    }
                    else
                    {
                        spriteRenderer.sprite = m_sprites[0];
                    }
                }
                if (forward.eulerAngles.y == 0)
                {
                    if (!PickableObject)
                    {
                        spriteRenderer.sprite = m_sprites[5];
                    }
                    else
                    {
                        spriteRenderer.sprite = m_sprites[4];
                    }
                }
            }

            //transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.Euler(0, Mathf.Atan2(controller.HorizontalAxis, controller.VerticalAxis) * Mathf.Rad2Deg, 0), settings.Smoothness);
            myRigidbody.velocity = forward.forward * settings.Speed;

//            FMODUnity.RuntimeManager.PlayOneShot(footStepEvent, transform.position);
        }
        else
        {
            myRigidbody.velocity = Vector3.zero;
        }

        ComputeRaycast();

        bool pickUp = prevState.Buttons.X == ButtonState.Released && state.Buttons.X == ButtonState.Pressed;

        if (blockToToInteract && pickUp)
        {
            blockToToInteract.OnInteract(this);

            PickUpBlock         pickUpBlock         = blockToToInteract.GetComponent <PickUpBlock>();
            DipositeBlock       dipositeBlock       = blockToToInteract.GetComponent <DipositeBlock>();
            PickUpDipositeBlock pickUpDipositeBlock = blockToToInteract.GetComponent <PickUpDipositeBlock>();

            if (pickUpBlock)
            {
                if (!PickableObject)
                {
                    PickableObject pickableObject = pickUpBlock.PickUp();
                    if (pickableObject)
                    {
                        PickableObject = pickableObject;
                    }
                }
            }

            if (dipositeBlock)
            {
                if (PickableObject)
                {
                    if (dipositeBlock.Diposide(PickableObject))
                    {
                        PickableObject = null;
                    }
                }
            }

            if (pickUpDipositeBlock)
            {
                bool canPickUp = false;
                if (PickableObject)
                {
                    canPickUp = pickUpDipositeBlock.Diposide(PickableObject);
                    if (canPickUp)
                    {
                        PickableObject = null;
                    }
                    //PickableObject.transform.SetParent(null);
                }

                if (!canPickUp && !PickableObject)
                {
                    PickableObject pickableObject = pickUpDipositeBlock.PickUp();

                    if (pickableObject)
                    {
                        PickableObject = pickableObject;
                        return;
                    }
                }
            }
        }
    }