android - 触摸阶段行为问题

标签 android input unity-game-engine touch

我正在 Unity3D 中为触摸屏设备制作 2D 游戏,我正在尝试制作类似“GetMouseButtonDown”的游戏。这是我的代码:

if (Input.touchCount > 0) {

    foreach (Touch touch in Input.touches) {
        Vector3 i = Camera.main.ScreenToWorldPoint (touch.position);
        RaycastHit2D hit = Physics2D.Raycast (i, i);
        if (hit.transform != null) {

            string tag = hit.transform.gameObject.tag;

            if (touch.phase == TouchPhase.Began) {
                    hit.transform.localScale = new Vector2(-transform.localScale.x, -transform.localScale.y);
            }

        }
    }
}

我想让被击中的物体改变比例。我希望它像我使用“GetMouseButtonDown”时那样。然而,结果,我按下它,它的比例发生了变化,但只有一次。我再次按下,没有任何反应。我应该怎么办?

最佳答案

问题与触摸阶段行为无关,您实现得很好。

问题是您每次触摸游戏对象时都将其设置为相同的比例。为完善您的游戏对象,您必须像这样设置 hit.transform.localScale:

hit.transform.localScale = new Vector2(-hit.transform.localScale.x, -hit.transform.localScale.y)

请注意,每次您触摸游戏对象时,您都将 x 和 y 比例设置为 transform.localScale,这是一个常量值。

另请注意,在这句话中,您每次触摸游戏对象时只是在翻转刻度。如果你想迭代地缩放你的游戏对象,使其变小,你必须做这样的事情:

float scaleFactor = -0.2f;
hit.transform.localScale += new Vector2(hit.transform.localScale.x*scaleFactor, hit.transform.localScale.y*scaleFactor);

关于android - 触摸阶段行为问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28373907/

相关文章:

java - 当我尝试在 Android Studio 中扩展 ImageView 时收到一条错误消息

android - 可以在非根内核上使用 RenderScript 的 rsForEach 吗?

javascript - 在 div 中使用箭头键

javascript - 如何制作单选和复选框的组合?

unity-game-engine - 如何检测 Facebook Canvas 上是否有 WebGL

android - 为什么 notifyItemChanged 只能在 setAdapter 之后的 Post Runnable 中起作用?

javascript - html5数字输入步长和精度

c# - GIT - 是否可以从 'rev-list [remote_branch] --count' 值检索提交哈希?

iphone - Unity iOS 版本 : app store size 4x ipa size

java - startActivity() 不显示新 Activity