Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用于滚动天空x轴控制的统一触摸输入_C#_Unity3d_Mobile - Fatal编程技术网

C# 用于滚动天空x轴控制的统一触摸输入

C# 用于滚动天空x轴控制的统一触摸输入,c#,unity3d,mobile,C#,Unity3d,Mobile,我已经写了一些代码,我会想象这是一个非常简单的版本,类似于《滚滚天空》游戏的玩家控制器 void Update () { if (Input.GetMouseButton(0)) { NewX = Camera.main.ScreenToViewportPoint (Input.mousePosition).x; float xMotion = (LastX - NewX) * -NavigationMultiplier / Screen.width;

我已经写了一些代码,我会想象这是一个非常简单的版本,类似于《滚滚天空》游戏的玩家控制器

void Update () {
    if (Input.GetMouseButton(0)) {
        NewX = Camera.main.ScreenToViewportPoint (Input.mousePosition).x;
        float xMotion = (LastX - NewX) * -NavigationMultiplier / Screen.width;
        this.transform.position = new Vector3 (this.transform.position.x + xMotion, this.transform.position.y, this.transform.position.z);
    }
    LastX = Camera.main.ScreenToViewportPoint(Input.mousePosition).x;
}
这段代码在桌面上运行得很好,但正如预期的那样,它在移动设备(选择的平台)上运行得不太好 有趣的是,它看起来就像玩家跟随手指一样简单地使用:

this.transform.position = new Vector3 (Input.mousePosition.x, this.transform.position.y, this.transform.position.z);
有人能帮助第一个代码块在手机上正常工作吗

桌面行为(所需)

移动行为(不期望的)


提前感谢

我假设你希望球的移动更平稳,有点像在游戏中,而不是立即传送到球员接触的地方。为此,可以使用名为
Lerp
的函数。阅读更多

要实现这一点,您可以替换这一行代码

this.transform.position = new Vector3 (this.transform.position.x + xMotion, this.transform.position.y, this.transform.position.z);
用这个

this.transform.position = Vector3.Lerp(this.transform.position, new Vector3 (this.transform.position.x , this.transform.position.y, this.transform.position.z),Time.deltaTime)

希望有帮助

由于某些原因,Input.GetMouseButton在Android上始终为true(不确定其他平台),因此,要强制重新定位仅在用户在屏幕上“按下”时发生,我使用以下代码:

if (Input.GetTouch(0).phase == TouchPhase.Moved){
        NewX = Camera.main.ScreenToViewportPoint (Input.mousePosition).x;
        float xMotion = (LastX - NewX) * -NavigationMultiplier / Screen.width;
        this.transform.position = new Vector3 (this.transform.position.x + xMotion, this.transform.position.y, this.transform.position.z);
    }
    LastX = Camera.main.ScreenToViewportPoint(Input.mousePosition).x;

谢谢你的建议,我一定会实施的。我仍然面临的问题是,我提供的代码在桌面上运行得很好,但在移动设备上无法正确执行…您在哪个平台上运行它?到底是什么问题?球/球员不会在tuch上移动?我本以为它不会移动,但奇怪的是,它会移动,就像我在使用问题中的第二个代码块一样…所以点击任何位置它都会立即捕捉到我的手指位置,而不是像在桌面上那样滚动。。。