private void OnCubeMove(CubeMoveEvent evt) { this.m_MoveEvent = evt; Vector3 right = AxisUtil.Axis2Direction(evt.cube.transform, evt.rightAxis); Vector3 up = AxisUtil.Axis2Direction(evt.cube.transform, evt.upAxis); Vector3 forward = AxisUtil.Axis2Direction(evt.cube.transform, evt.forwardAxis); m_EndRotation = Quaternion.LookRotation(forward, up); m_EndPosition = evt.cube.transform.position + m_EndRotation * Vector3.up * evt.cube.size * 0.5f; }
public override void OnGUI() { GUILayout.Space(50); if (GUILayout.Button("Go!", LogUtil.guiStyle)) { if (controller.stateMachine.Get<IdleState>() != controller.stateMachine.state) { return; } controller.magicCube.enableCollision = true; CubeMoveEvent evt = null; RaycastHit raycastHit; if (Physics.Raycast(controller.player.cube.transform.position, controller.player.transform.forward, out raycastHit, controller.magicCube.distance, 1 << LayerDefine.CUBE)) { CubeItem cube = raycastHit.collider.GetComponent<CubeItem>(); if (null != cube && cube.layer == controller.magicCube.layer) { evt = new CubeMoveEvent(); evt.cube = cube; evt.rightAxis = AxisUtil.Direction2Axis(cube.transform, controller.player.transform.right); evt.upAxis = AxisUtil.Direction2Axis(cube.transform, controller.player.transform.up); evt.forwardAxis = AxisUtil.Direction2Axis(cube.transform, controller.player.transform.forward); } } if (null == evt) { CubeItem cube = controller.player.cube; evt = new CubeMoveEvent(); evt.cube = cube; evt.rightAxis = AxisUtil.Direction2Axis(cube.transform, controller.player.transform.right); evt.upAxis = AxisUtil.Direction2Axis(cube.transform, controller.player.transform.forward); evt.forwardAxis = AxisUtil.Direction2Axis(cube.transform, -controller.player.transform.up); } controller.magicCube.enableCollision = false; if (null != evt) { if (!evt.cube.itemDict.ContainsKey(evt.upAxis)) { return; } if (ItemType.STOP == evt.cube.itemDict[evt.upAxis].id) { controller.stateMachine.Enter<IdleState>(); } else { controller.stateMachine.Enter<MoveState>(); EventSystem<CubeMoveEvent>.Broadcast(evt); } } } }