Unity2D移动RectTransform

时间:2017-08-29 15:01:17

标签: c# unity3d

RectTransform位于“空间 - 覆盖”中绘制的Canvas-HUD中,它实际上接收指针/触摸事件,它还将RectTransform放置在正确的位置,它只是精灵没有动。

下面'我放在Update()函数中的代码:

foreach (Touch t in Input.touches) { // check all the touches
    if (t.position.x >= Screen.width/2) { // if it's on the right half of the screen
        if (t.phase == TouchPhase.Began) { // if has just began pressing
            aimCenter = t.position; // set position
            Vector2 pos = new Vector2 (aimCenter.x / (float)Screen.width,aimCenter.y / (float)Screen.height); // calculate anchor position
            actionHandler.SetPosition (pos.x - .08f, pos.y - .14f, pos.x + .08f, pos.y + .14f); // apply anchor position (the function just sets anchorMax and anchorMin, then sets offsets to 0
            actionHandler.gameObject.SetActive (true); // make visible
        }
    }
    if (canMove && t.position.x < Screen.width/2) { // same as above but for the left half of the screen
        if (t.phase == TouchPhase.Began) {
            movCenter = t.position;
            Vector2 pos = new Vector2 (t.position.x / Screen.width, t.position.y / Screen.height);
            directionHandler.SetPosition (pos.x - .08f, pos.y - .14f, pos.x + .08f, pos.y + .14f);
            directionHandler.gameObject.SetActive (true);
        }
    }
}

代码的最终目标是在手指开始触摸的位置显示2个精灵,并保持在那里直到手指在屏幕上。 代码第一次运行,没有问题,但是当我尝试再次在精灵中触摸屏幕仍然处于相同的位置或更好时:它是同一个&#34;旧&#34;位置,而从编辑器,我可以看到锚点的实际位置是正确的

我该如何解决这个问题? 我还尝试使用RectTransform.sizeDelta并通过.localPosition设置位置,但我遇到了同样的问题

此外,当我尝试在屏幕的同一侧使用2个手指时,精灵实际上会被绘制到应该的位置!

如果你想在这里尝试实时版本the published app

0 个答案:

没有答案