private void FixedUpdate() { isGrounded = false; Collider2D collider = Physics2D.OverlapCircle(groundCheck.position, groundCheckRadius, ground | cubeLayer); if (collider) { if (Time.time > nextGroundCheckTime) { if (!collider.isTrigger) { isGrounded = true; canJumpAgain = false; ableToBeJumpAgain = true; } } if (collider.GetComponent <WhiteSideCube>()) { if (collider.GetComponent <WhiteSideCube>().IsWhite()) { whiteSideCube = collider.GetComponent <WhiteSideCube>(); } } } else { whiteSideCube = null; } }
private void Awake() { leftOrDownSideCubes = new List <ColoredCube>(); rightOrUpbSideCubes = new List <ColoredCube>(); cubeLayer = LayerMask.NameToLayer("Cube"); RaycastHit2D[] rayHit; RaycastHit2D[] rayHit2; if (isHorizontal) { rayHit = Physics2D.RaycastAll(transform.position, new Vector2(-1, 0), 20f, 1 << cubeLayer); rayHit2 = Physics2D.RaycastAll(transform.position, new Vector2(1, 0), 20f, 1 << cubeLayer); } else { rayHit = Physics2D.RaycastAll(transform.position, new Vector2(0, -1), 20f, 1 << cubeLayer); rayHit2 = Physics2D.RaycastAll(transform.position, new Vector2(0, 1), 20f, 1 << cubeLayer); } for (int i = 0; i < rayHit.Length; i++) { WhiteSideCube wsc = rayHit[i].collider.gameObject.GetComponent <WhiteSideCube>(); BlackSideCube bsc = rayHit[i].collider.gameObject.GetComponent <BlackSideCube>(); if (wsc) { leftOrDownSideCubes.Add(wsc); if (wsc.mirrors[0]) { wsc.mirrors[1] = this; } else { wsc.mirrors[0] = this; } } else { leftOrDownSideCubes.Add(bsc); if (bsc.mirrors[0]) { bsc.mirrors[1] = this; } else { bsc.mirrors[0] = this; } } } for (int i = 0; i < rayHit2.Length; i++) { WhiteSideCube wsc = rayHit2[i].collider.gameObject.GetComponent <WhiteSideCube>(); BlackSideCube bsc = rayHit2[i].collider.gameObject.GetComponent <BlackSideCube>(); if (wsc) { rightOrUpbSideCubes.Add(wsc); if (wsc.mirrors[0]) { wsc.mirrors[1] = this; } else { wsc.mirrors[0] = this; } } else { rightOrUpbSideCubes.Add(bsc); if (bsc.mirrors[0]) { bsc.mirrors[1] = this; } else { bsc.mirrors[0] = this; } } } }