Ejemplo n.º 1
0
    public void OnEndDrag(PointerEventData eventData)
    {
        var startWorldPosition = eventData.pointerPressRaycast.worldPosition;

        var endScreenPosition3D = new Vector3(Input.mousePosition.x, Input.mousePosition.y, distance);

        Vector3 endWorldPosition = Camera.main.ScreenToWorldPoint(endScreenPosition3D);

        Debug.DrawLine(startWorldPosition, endWorldPosition, Color.red, 50000);
        //Debug.Log($"Start OnEndDrag {startWorldPosition} , {endWorldPosition}");

        var resultVector = endWorldPosition - startWorldPosition;
        var crossVector  = Vector3.Cross(eventData.pointerPressRaycast.worldNormal, resultVector); // We want to turn the cube around the axis that is nearest to this


        var axisTurningWayPair = AxisExtensions.Vector3ToAxis(crossVector, transform);

        Axis  axis       = axisTurningWayPair.Key;
        float turningWay = Mathf.Sign(axisTurningWayPair.Value);

        //Debug.Log($"Chosen Axis: {axis}");

        float positionValue = AxisExtensions.GetValueAtAxis(axis, eventData.pointerPressRaycast.gameObject.transform.localPosition);

        cubeScript.RotateSide(axis, positionValue, turningWay * 90);
    }
Ejemplo n.º 2
0
 public Axis GetNormalAxis()
 {
     return(AxisExtensions.Vector3ToAxis(GetNormalVector(), transform.parent.parent.transform).Key);
 }