C# Unity中触摸输入的更新不工作

C# Unity中触摸输入的更新不工作,c#,unity3d,C#,Unity3d,我正在做一个类似乒乓球的游戏,除了用户控制两个球拍并试图将球固定在界内。我用触摸控制两个桨。我分配触摸索引的方式如下: public void checkTouchIndex() { if (Input.touchCount <= 1) { touchPos = Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position); if (touchPos.x < 0)

我正在做一个类似乒乓球的游戏,除了用户控制两个球拍并试图将球固定在界内。我用触摸控制两个桨。我分配触摸索引的方式如下:

     public void checkTouchIndex() {
    if (Input.touchCount <= 1)
    {
        touchPos = Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position);
        if (touchPos.x < 0)
        {
            Debugger.il = "Touch Index = 0";
            myTouch = Input.GetTouch(0);
        }

    }
    if (Input.touchCount >= 1)
    {
        touchPos = Camera.main.ScreenToWorldPoint(Input.GetTouch(1).position);
        if (touchPos.x < 0)
        {

            Debugger.il = "Touch Index = 1";
            myTouch = Input.GetTouch(1);

        }
    }
    else
        Debugger.il = "Side not touched";
}
注意:
调试器
只是在屏幕上显示触摸哪一侧的文本以及触摸的x位置。然而,我有困难更新。你应该能够拖动你的手指并让划桨跟随它,但是在一些测试之后,我注意到只有一个划桨正在正确地更新以跟随手指,并且它始终是食指为1的划桨

例如,如果我触摸骑乘侧,则将另一个手指放在左侧。我将能够正确地上下拖动我的左侧,但右侧,即使我上下移动它,仍将保持不变


问题:如何使两个挡板都能完美更新。

我认为您应该有一个for循环来完成所有触摸。

void Update()
{
如果(Input.touchCount>0)
{
对于(int i=0;i
我相信你应该有一个for循环来完成所有的触摸。

void Update()
{
如果(Input.touchCount>0)
{
对于(int i=0;i
乔丹的答案让你有了一部分的了解,但没有解释如何获得属于哪个划桨的触感

目前,由于两个拨杆上的代码相同,因此两个拨杆将具有相同的触键

你需要的东西,分配第一次接触的桨侧

我在Jordan的答案中添加了一些伪代码,以便您了解确切的实现

if (Input.touchCount > 0)
{
    for (int i = 0; i < Input.touchCount; i++) 
    {
        touchPos = Camera.main.ScreenToWorldPoint(Input.GetTouch(i));

        // if(touchPos.x is on my side)
        // {
        //    myTouch = touchPos;
        // }

    }
}
if(Input.touchCount>0)
{
对于(int i=0;i
最好的方法是在触摸首次注册时分配触摸,而不是在每个帧上循环使用该代码。
祝你的项目好运。

乔丹的答案让你走了一段路,但没有解释如何获得属于哪个划桨的触感

目前,由于两个拨杆上的代码相同,因此两个拨杆将具有相同的触键

你需要的东西,分配第一次接触的桨侧

我在Jordan的答案中添加了一些伪代码,以便您了解确切的实现

if (Input.touchCount > 0)
{
    for (int i = 0; i < Input.touchCount; i++) 
    {
        touchPos = Camera.main.ScreenToWorldPoint(Input.GetTouch(i));

        // if(touchPos.x is on my side)
        // {
        //    myTouch = touchPos;
        // }

    }
}
if(Input.touchCount>0)
{
对于(int i=0;i
最好的方法是在触摸首次注册时分配触摸,而不是在每个帧上循环使用该代码。
祝您的项目好运。

这是拨片本身的检查触摸索引代码吗?这是拨片本身的检查触摸索引代码吗?
if (Input.touchCount > 0)
{
    for (int i = 0; i < Input.touchCount; i++) 
    {
        touchPos = Camera.main.ScreenToWorldPoint(Input.GetTouch(i));

        // if(touchPos.x is on my side)
        // {
        //    myTouch = touchPos;
        // }

    }
}