相机通过触摸拖动旋转

时间:2019-09-16 09:20:04

标签: unity3d

通过触摸拖动相机旋转。

我想通过触摸拖动来旋转相机。

所以我通过Google搜索看到了许多脚本。

触摸通常会看着奇怪的相机。

让我知道问题出在哪里。

这是我正在测试的。

void Start()
{
    xAngle = 0f;
    yAngle = 5f;
    transform.rotation = Quaternion.Euler(yAngle, xAngle, 0);
}

void Update()
{

    if (isCanRotate != false)
    {

        if (Input.touchCount > 0)
        {
            if (Input.GetTouch(0).phase == TouchPhase.Began)
            {
                FirstPoint = Input.GetTouch(0).position;
                xAngleTemp = xAngle;
                yAngleTemp = yAngle;
            }
            else if (Input.GetTouch(0).phase == TouchPhase.Moved)
            {
                SecondPoint = Input.GetTouch(0).position;
                xAngle = xAngleTemp + (SecondPoint.x - FirstPoint.x) * 360f / Screen.width;
                yAngle = yAngleTemp - (SecondPoint.y - FirstPoint.y) * 360f / Screen.height;


                if (yAngle < -60f)
                    yAngle = -60f;
                if (yAngle > 80f)
                    yAngle = 80f;

                transform.rotation = Quaternion.Euler(yAngle, xAngle, 0.0f);
            }
        }

    }
}

我刚刚检查了一下,如果您构建并测试Android,就没有问题。但是我使用WebGL进行构建和测试,并且WebGl中的屏幕打开了。

WebGl中是否有解决方案?

1 个答案:

答案 0 :(得分:0)

尝试以下更新的一项: (注意:我删除了布尔变量,因为不确定何时启用它)

    Vector3 FirstPoint;
    Vector3 SecondPoint;
    float xAngle;
    float yAngle;
    float xAngleTemp;
    float yAngleTemp;

    void Start()
    {
        xAngle = 0;
        yAngle = 0;
        this.transform.rotation = Quaternion.Euler(yAngle, xAngle, 0);
    }

    void Update()
    {
        if (Input.touchCount > 0)
        {
            if (Input.GetTouch(0).phase == TouchPhase.Began)
            {
                FirstPoint = Input.GetTouch(0).position;
                xAngleTemp = xAngle;
                yAngleTemp = yAngle;
            }
            if (Input.GetTouch(0).phase == TouchPhase.Moved)
            {
                SecondPoint = Input.GetTouch(0).position;
                xAngle = xAngleTemp + (SecondPoint.x - FirstPoint.x) * 180 / Screen.width;
                yAngle = yAngleTemp + (SecondPoint.y - FirstPoint.y) * 90 / Screen.height;
                this.transform.rotation = Quaternion.Euler(yAngle, xAngle, 0.0f);
            }
        }

    }