public CubeController DoPush(Vector3 dir) { CubeController didPush = null; Vector3 origin = m_Cube.transform.position; RaycastHit outHit = new RaycastHit(); if (Physics.Linecast(origin, origin + dir, out outHit)) { //if has any collision object, look for a CubeController its parent object, and then try to move it CubeController cube = outHit.collider.transform.GetComponentInParent <CubeController>(); if (cube != null) { if (cube.m_CanBePushed) { didPush = cube.DoMove(dir); } else if (!cube.m_PushCubeType.Equals(PushType.DontPushCubes)) { cube.DoPush(dir); } //if is not possible to move, then try to shake it if (!didPush) { cube.DoShake(); } } } return(didPush); }
public void DoPush(Vector3 dir) { if (m_CanPush) { Vector3 origin = m_Cube.transform.position; RaycastHit outHit = new RaycastHit(); if (Physics.Linecast(origin, origin + dir, out outHit)) { //if has any collision object, look for a CubeController its parent object, and then try to move it CubeController cube = outHit.collider.transform.GetComponentInParent <CubeController>(); if (cube != null) { cube.DoMove(dir); } } } }