Unity 相机触摸旋转 Pokemon Go 风格

问题描述 投票:0回答:0

最近我一直在尝试让我的相机像在 Pokemon Go 中一样旋转,我的意思是每当玩家做一个圆形触摸手势(如下图)时,相机也会以这种方式旋转,如果他们返回到他们开始的原始点,旋转继续进行。此外,像这样向右和向左旋转的能力是我尚未复制的。 enter image description here

我尝试了各种代码片段但无济于事。我试图让我的相机只在 Z 轴上旋转,因为我需要我的 X 旋转为 90* 和 Y 为 0.

如果有人知道如何做到这一点,我将不胜感激:)

if(Input.touchCount==1 && inputsPaused == false)
        {
 
 
            Touch firstTouch = Input.GetTouch(0);
 
 
 
            //if (firstTouch.deltaPosition.y > 0)
            //{
            //    if (firstTouch.deltaPosition.x < 0)
            //    {
            //        transform.eulerAngles += new Vector3(0, 0, -40f * Time.deltaTime);
            //        compas.Rotate(new Vector3(0, 0, -4f * Time.deltaTime));
            //    }
            //    else
            //         if (firstTouch.deltaPosition.x > 0)
            //    {
            //        transform.eulerAngles += new Vector3(0, 0, 40f * Time.deltaTime);
            //        compas.Rotate(new Vector3(0, 0, -4f * Time.deltaTime));
            //    }
 
            //}
            //else
            //    if (firstTouch.deltaPosition.y < 0)
            //{
            //    if (firstTouch.deltaPosition.x < 0)
            //    {
            //        transform.eulerAngles += new Vector3(0, 0, 40f * Time.deltaTime);
            //        compas.Rotate(new Vector3(0, 0, -4f * Time.deltaTime));
            //    }
            //    else
            //         if (firstTouch.deltaPosition.x > 0)
            //    {
            //        transform.eulerAngles += new Vector3(0, 0, -40f * Time.deltaTime);
            //        compas.Rotate(new Vector3(0, 0, -4f * Time.deltaTime));
            //    }
            //}
 
            if (firstTouch.position.y > 0)
            {
               
                    transform.eulerAngles += new Vector3(0, 0, -40f * Time.deltaTime);
                    compas.Rotate(new Vector3(0, 0, -4f * Time.deltaTime));
             
 
            }
            else
                   if (firstTouch.position.y < 0)
            {
               
               
                    transform.eulerAngles += new Vector3(0, 0, 40f * Time.deltaTime);
                    compas.Rotate(new Vector3(0, 0, -4f * Time.deltaTime));
               
             
            }
 
 
 
            text.text = "X: " + firstTouch.position.x + " Y: " + firstTouch.position.y;
 
 
 
            //if (Input.GetTouch(0).phase == TouchPhase.Began)
            //{
            //    startAngle = Mathf.Atan2(touchPos.y, touchPos.x) * Mathf.Rad2Deg;
            //    if (startAngle <= 0)
            //    {
            //        startAngle += 360;
            //    }
            //}
            //angle = Mathf.Atan2(touchPos.y, touchPos.x) * Mathf.Rad2Deg;
            //if (angle < 0)
            //    angle += 360;
            //distanceAngle = startAngle - endAngle;
            //angle -= distanceAngle;
            //if (angle < 0)
            //    angle += 360;
            //else if (angle > 360)
            //    angle -= 360;
            //if (Input.GetTouch(0).phase == TouchPhase.Ended)
            //{
            //    endAngle = angle;
            //}
 
            //transform.rotation = Quaternion.Euler(transform.rotation.x, transform.rotation.y, angle);
 
        }
 
     
 
 
 
 
 
 
 
    }
c# unity3d rotation pokemon-go
© www.soinside.com 2019 - 2024. All rights reserved.