Beispiel #1
0
    void Awake()
    {
        settings  = FindObjectOfType <Settings>();
        worldSize = settings.worldSize;

        conveyorBeltManager = FindObjectOfType <ConveyorBeltManager>();
        int x = Mathf.RoundToInt(transform.position.x);
        int y = Mathf.RoundToInt(transform.position.y);

        conveyorBeltManager.conveyors[x + worldSize / 2, y + worldSize / 2] = this;
    }
Beispiel #2
0
    private void Update()
    {
        if (Physics2D.OverlapCircle(transform.position, 0.2f, conveyorLayer))
        {
            GameObject          currentConveyor       = Physics2D.OverlapCircle(transform.position, 0.2f, conveyorLayer).gameObject;
            ConveyorBeltManager currentConveyorScript = currentConveyor.GetComponent <ConveyorBeltManager>();

            Vector2 velocity = Vector2.zero;
            if (currentConveyorScript.isOn)
            {
                switch (currentConveyorScript.direction)
                {
                case 0:
                    if (!Physics2D.OverlapBox(transform.position + new Vector3(0, 0.4f, 0), new Vector2(0.2f, 0.2f), 0, itemLayer))
                    {
                        if (transform.position.x > currentConveyor.transform.position.x)
                        {
                            velocity = new Vector2(-1, 1);
                        }
                        else
                        {
                            velocity = new Vector2(1, 1);
                        }
                    }
                    break;

                case 1:
                    if (!Physics2D.OverlapBox(transform.position + new Vector3(0.4f, 0, 0), new Vector2(0.2f, 0.2f), 0, itemLayer))
                    {
                        if (transform.position.y > currentConveyor.transform.position.y)
                        {
                            velocity = new Vector2(1, -1);
                        }
                        else
                        {
                            velocity = new Vector2(1, 1);
                        }
                    }
                    break;

                case 2:
                    if (!Physics2D.OverlapBox(transform.position + new Vector3(0, -0.4f, 0), new Vector2(0.2f, 0.2f), 0, itemLayer))
                    {
                        if (transform.position.x > currentConveyor.transform.position.x)
                        {
                            velocity = new Vector2(-1, -1);
                        }
                        else
                        {
                            velocity = new Vector2(1, -1);
                        }
                    }
                    break;

                case 3:
                    if (!Physics2D.OverlapBox(transform.position + new Vector3(-0.4f, 0, 0), new Vector2(0.2f, 0.2f), 0, itemLayer))
                    {
                        if (transform.position.y > currentConveyor.transform.position.y)
                        {
                            velocity = new Vector2(-1, -1);
                        }
                        else
                        {
                            velocity = new Vector2(-1, 1);
                        }
                    }
                    break;
                }
            }
            rBody.velocity = velocity;
        }
        else
        {
            rBody.velocity = Vector2.zero;
        }
    }