Unity3D Touch旋转对象

时间:2015-04-27 08:57:31

标签: android ios unity3d rotation touch

我想在不使用gameobject的情况下轮换我的z-axis,以便它只能水平和垂直旋转。

现在我正在使用此代码

void Update () {
    if (Input.touchCount == 1) {
        var touch = Input.GetTouch(0);
        switch(Input.GetTouch(0).phase){
        case TouchPhase.Moved:
            float swipeDistVertical = (new Vector3(0, touch.deltaPosition.y, 0) - new Vector3(0, startPos.y, 0)).magnitude;              
            if (swipeDistVertical > 0)                  
            {                   
                float swipeValue = Mathf.Sign(touch.deltaPosition.y - startPos.y);                   
                if (swipeValue > 0 || swipeValue < 0)//up swipe     
                {
                    vertical = true;
                    horizontal = false;
                }                               
            }               
            float swipeDistHorizontal = (new Vector3(touch.deltaPosition.x,0, 0) - new Vector3(startPos.x, 0, 0)).magnitude;             
            if (swipeDistHorizontal > 0)                    
            {                   
                float swipeValue = Mathf.Sign(touch.deltaPosition.x - startPos.x);                   
                if (swipeValue > 0 || swipeValue < 0)//right swipe
                {
                    horizontal = true;
                    vertical = false;
                }                           
            }

            if(vertical)
            {
                transform.Rotate(touch.deltaPosition.y * 0.3f, 0,0,Space.World);
            }
            if(horizontal)
            {
                transform.Rotate(0,touch.deltaPosition.x * 0.3f,0,Space.World);
            }
            break;
        }
    }
}

我从这个link

获得了这段代码

现在我可以旋转,但它在z轴上旋转以及我不想要的。并且它不会处理垂直滑动,它在两者之间切换,而不是立即识别它是垂直的。

我使用Unity 4.6.2,这应该适用于iOSAndroid

1 个答案:

答案 0 :(得分:0)

在您放置&#34; break&#34;。

之前添加以下代码
float z=transform.rotation.z;
transform.Rotate(0,0,-z);