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; }
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; } }