gpt4 book ai didi

c# - Unity3d如何检测android上的点击?

转载 作者:行者123 更新时间:2023-11-30 14:49:25 25 4
gpt4 key购买 nike

目前,我正在努力研究如何创建一段简单的代码来告诉我是否发生了点击,从而让我能够获得点击的位置。浏览了许多不同的文章后,我很困惑,因为通常建议仅适用于 ios 的 Touch.tapCount。此外,我曾尝试使用 Touch.deltaTime 和/或 Touch.deltaPosition 来检测点击,但都失败了。

我将水龙头定义为具有

  • 手指最初接触到最终离开手机之间的一段非常短的时间

  • 很少或没有移动

感谢您阅读本文,我希望它清晰准确,如果需要任何细节或代表我的帮助以便您回答,请随时询问。非常感谢收到任何帮助。谢谢。

注意 - 我在 C# 中工作

最佳答案

首先,您必须确定您的 Android 设备是否确实可以注册多次触摸。如果您有较新的设备,这应该不是问题。我假设您的设备可以,如果不能 - 您很快就会发现。

让我们从更新方法开始。

void Update() {
// Nothing at the moment
}

我们首先要做的是注册触摸。我们可以通过将 foreach 放入其中,检查 Input.touches 中的触摸来做到这一点。像这样:

    void Update() {
foreach (Touch touch in Input.touches) {

}
}

通过这样做,我们总是在检查屏幕上当前有多少触摸。我们现在可以做的是检查 fingerId,如果 fingerId == 0, 1, 2... 运行一些代码。这是我们现在得到的:

    void Update() {
foreach (Touch touch in Input.touches) {

if (touch.fingerId == 0) {
// Finger 1 is touching! (remember, we count from 0)
}

if (touch.fingerId == 1) {
// finger 2 is touching! Huzzah!
}
}
}

到目前为止我们都很棒!我们现在要做的是检测我们想要的运动。在我们的例子中,我们想要水龙头,对吧?这应该与 TouchPhase Began, and Ended 完美配合。还有 TouchPhase.Moved,但我们现在不需要它。

if (touch.fingerId == 0) {

if (Input.GetTouch(0).phase == TouchPhase.Began) {
Debug.Log("First finger entered!");
}

if (Input.GetTouch(0).phase == TouchPhase.Ended) {
Debug.Log("First finger left.");
}
}

这里我们正在检查相应手指的相位。如果您现在运行它,您应该能够在第一次触摸进入和离开屏幕时在控制台中看到消息。这可以通过几次接触来完成,所以这是“完整”脚本:

    void Update() {
foreach (Touch touch in Input.touches) {

if (touch.fingerId == 0) {
if (Input.GetTouch(0).phase == TouchPhase.Began) {
Debug.Log("First finger entered!");
}
if (Input.GetTouch(0).phase == TouchPhase.Ended) {
Debug.Log("First finger left.");
}
}

if (touch.fingerId == 1) {
if (Input.GetTouch(1).phase == TouchPhase.Began) {
Debug.Log("Second finger entered!");
}
if (Input.GetTouch(1).phase == TouchPhase.Ended) {
Debug.Log("Second finger left.");
}
}
}
}

希望对您有所帮助。我自己在这方面还很陌生,所以如果我们幸运的话——有更多经验的人可以来帮忙。我相信这可以写得更干净。请记住,如果您构建它,您将看不到控制台消息。如果您还没有,请查看 Unity Remote。祝你好运! :)

关于c# - Unity3d如何检测android上的点击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38728714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com