【问题标题】:How do I properly configure touch on Unity 3D?如何在 Unity 3D 上正确配置触摸?
【发布时间】:2021-01-02 12:30:05
【问题描述】:

我正在 Unity3D 上制作游戏。如图所示,立方体应该移动到某个位置,我实现了这个,但是当我点击屏幕时出现问题,它一次移动了几个位置,我用Debug测试了这种情况。日志(我还附上了照片),可以看到,一键触发多次,如何解决?

附:还可以建议如何在某个坐标中添加立方体的运动平滑度,通过 transform.forward 尝试,但无法弄清楚如何在正确的坐标处停止它。

The cube's position

The Message Debug.Log

private void Update()
{
    CubePosUp_Z = transform.position.z - 0.7f;
    CubePosDown_Z = transform.position.z + 0.7f;
    if (Input.touchCount > 0)
    {
        Touch touch = Input.GetTouch(0);

        if (touch.position.y > Screen.height / 2)
        {
            tempUp = 1;
            tempDown = 0;
        }
        else
        {
            tempUp = 0;
            tempDown = 1;
        }

        if (tempUp == 1 && tempDown == 0)
        {
            UpTran();
        }
        else if (tempUp == 0 && tempDown == 1)
        {
            DownTran();
        }
    }
}

void UpTran()
{
    Debug.Log("Up");

    if (CubePosUp_Z <= -1.4)
    {
        transform.Translate(0, 0, 0, Space.World);
    }
    else if (CubePosUp_Z > -1.4)
    {
        transform.Translate(0, 0, -0.14f, Space.World);
    }
}
void DownTran()
{
    if (CubePosDown_Z >= 1.4)
    {
        transform.Translate(0, 0, 0, Space.World);
    }
    else if (CubePosDown_Z < 1.4)
    {
        transform.Translate(0, 0, 0.14f, Space.World);
    }
}

【问题讨论】:

  • 我建议你上 YouTube 并在触摸屏控件上观看 Brackey 的视频
  • 您对transform.Translate(0, 0, 0, Space.World); 行的期望是什么?使用距离为 .. 什么都没有的物体有什么用? ^^

标签: c# unity3d touch move


【解决方案1】:

@TheHotboll 这是您的解决方案:-

[SerializeField] float touchForce = 2f;

void Update ()
{
    if (Input.touchCount > 0)
    {
        Touch touch = Input.GetTouch (0);

        if (touch.phase == TouchPhase.Moved)
        {
            transform.Translate (0f, 0f, touch.deltaPosition.x * touchForce * Time.deltaTime, Space.World);
        }
    }
}

首先在Update () 函数中,我们检查我们是否真的在滑动或只是触摸。如果我们正在滑动,那么我们使用transform.Translate () 函数在World Space 上移动变换。您还可以添加条件并检查touch.deltaPosition.x。这将顺利进行。试试看吧。

【讨论】:

  • 听起来更像是OP想要触摸并按住屏幕的上半部分向上移动,下半部分向下移动..不使用deltaPosition(它在像素空间中大得多那你觉得
  • @derHugo 谢谢。我不知道。这只是为了基本逻辑。我们可以使用Rigidbody检查玩家向哪个方向滑动并加力。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-18
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
  • 2021-02-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多