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# 如何通过触摸左右移动?_C#_Unity3d - Fatal编程技术网

C# 如何通过触摸左右移动?

C# 如何通过触摸左右移动?,c#,unity3d,C#,Unity3d,我想从整个屏幕向左和向右移动角色,如果我从任何地方向左或向右移动,它只需要移动我现在拥有的量=1.5f 我有此代码,工作非常完美,但它仅适用于鼠标,不适用于触摸屏: if (!isMoving && Input.GetMouseButtonDown(0)) { desiredPos = transform.position + Vector3.right * 1.52f; isMoving = true; } if (!isMoving && I

我想从整个屏幕向左和向右移动角色,如果我从任何地方向左或向右移动,它只需要移动我现在拥有的量=1.5f

我有此代码,工作非常完美,但它仅适用于鼠标,不适用于触摸屏:

if (!isMoving && Input.GetMouseButtonDown(0))
{
    desiredPos = transform.position + Vector3.right * 1.52f;
    isMoving = true;
}

if (!isMoving && Input.GetMouseButtonDown(1))
{
    desiredPos = transform.position - Vector3.right * 1.52f;
    isMoving = true;
}

if (isMoving)
{
    transform.position = Vector3.MoveTowards(transform.position, desiredPos, moveSpeed * Time.deltaTime);

    // this == is true if the difference between both
    // vectors is smaller than 0.00001
    if (transform.position == desiredPos)
    {
        isMoving = false;

        // So in order to eliminate any remaining difference
        // make sure to set it to the correct target position
        transform.position = desiredPos;
    }
}
我试图实现这段代码,但它不起作用

private void Update()
{
    timer += Time.deltaTime;

    int i = 0;
    //loop over every touch found
    while (i < Input.touchCount)
    {
        if (!isMoving && Input.GetTouch(i).position.x > ScreenWidth / 2)
        {
            //move right
            desiredPos = transform.position + Vector3.right * 1.52f;
            isMoving = true;
        }
        if (!isMoving && Input.GetTouch(i).position.x < ScreenWidth / 2)
        {
            //move left
            desiredPos = transform.position - Vector3.right * 1.52f;
            isMoving = true;
        }
        ++i;
    }


    if (isMoving)
    {
        transform.position = Vector3.MoveTowards(transform.position, desiredPos, moveSpeed * Time.deltaTime);

        // this == is true if the difference between both
        // vectors is smaller than 0.00001
        if (transform.position == desiredPos)
        {
            isMoving = false;

            // So in order to eliminate any remaining difference
            // make sure to set it to the correct target position
            transform.position = desiredPos;
        }
    }
}
private void Update()
{
timer+=Time.deltaTime;
int i=0;
//在找到的每一个触摸上循环
而(iScreenWidth/2)
{
//右移
desiredPos=transform.position+Vector3.right*1.52f;
isMoving=真;
}
if(!isMoving&&Input.GetTouch(i.position.x
第二个代码将字符向左或向右移动太多,我需要像第一个代码一样移动字符,但要使用触摸向左或向右滑动

我想要像这样的东西精确移动1.5华氏度


要与
GetMouseButtonDown
的行为相同,还需要检查触摸短语:

Input.GetTouch(i).phrase == TouchPhase.Began

如何在我的第一个代码中实现这一点请在我的示例中帮助我由于OP是
Touch
输入的新手,在检查任何给定触摸的状态之前添加关于检查触摸的注释可能会很有帮助。