首页 > 解决方案 > 用手指在 x 轴 3d 上移动对象

问题描述

我有一个问题:如何用手指在智能手机上移动 x 轴上的对象?在互联网上,我只能找到 2d 的解决方案,但不能找到 3d 项目的解决方案。

我试过这段代码,但它真的很生涩:

 void FixedUpdate()
     {
         if (Input.touchCount == 1) {
              touch = Input.GetTouch(0);
 
              if (touch.phase == TouchPhase.Moved) {
                  transform.position = new Vector3(
                      transform.position.x + touch.deltaPosition.x * speedModifier,
                      transform.position.y,
                      transform.position.z
                  );
              }
          }
          transform.position = new Vector3(
              transform.position.x, 
              transform.position.y, 
              transform.position.z + (speed * Time.fixedDeltaTime)
              );
     }

真正的问题是,我怎样才能使这段代码运行顺畅,因为它目前真的很不顺畅?

标签: unity3d

解决方案


如果您想将播放器移动到您按下的位置,您可以使用比您的更简单的代码:

        if (Input.touchCount > 0)
        {
            touch = Input.GetTouch(0);
            if (touch.phase == TouchPhase.Moved)
            {
                transform.position = new Vector3(
                   transform.position.x,
                   transform.position.y,
                   transform.position.z + touch.deltaPosition.x * speed);
}
}

它是非常可定制的,在这种情况下,例如,我正在沿z-axis移动播放器,就像在您的示例中一样,但这取决于手指从左到右的位置。

您可以按照自己喜欢的方式轻松更改代码的最后一部分,例如:

transform.position = new Vector3(
                   transform.position.x + touch.deltaPosition.x * speed,
                   transform.position.y + touch.deltaPosition.y * speed,
                   transform.position.z);

这样,它会根据您按下的点上下左右移动,这对于 2d 视图中的游戏可能很有用。在 3D 中,请记住,如果您向上按,大部分时间您都想在z 轴上移动,所以我的第一个代码运行良好,因为我正在更改 x 触摸上的 z 位置。


推荐阅读