【发布时间】:2016-09-26 12:11:14
【问题描述】:
我正在制作一款 2D 平台游戏。我使用 UI 元素进行拍摄,角色通过触摸屏幕移动。
以便移动角色
void Update()
{
if (Input.touches.Length>0) {
Touch firstTouch = Input.GetTouch (0);
if (firstTouch.phase == TouchPhase.Began) {
if (firstTouch.position.x > ScreenCenterX) {
sagHareketBasili ();//Move Right
}
if (firstTouch.position.x < ScreenCenterX) {
solHareketBasili ();//Move Left
}
} else
sagHareketBasiliDegil ();//Stop
solHareketBasiliDegil ();//Stop
}
}
}
所以我在互联网上做了一些研究。我将代码更改为
void Update()
{
if (Input.touches.Length>0) {
if (!EventSystem.current.IsPointerOverGameObject ()) {
Touch firstTouch = Input.GetTouch (0);
if (firstTouch.phase == TouchPhase.Began) {
if (firstTouch.position.x > ScreenCenterX) {
sagHareketBasili ();
}
if (firstTouch.position.x < ScreenCenterX) {
solHareketBasili ();
}
} else if (firstTouch.phase == TouchPhase.Ended) {
sagHareketBasiliDegil ();
solHareketBasiliDegil ();
}
}
}
}
看来问题解决了。但不是。 首先,当我触摸 UI 元素之外的字符移动时。如果我第一次接触 UI 元素,角色移动和 UI 元素会起作用(两者不应该一起工作)。如果我第二次触摸 UI 元素,我就成功了我想做的事情(只是 UI 元素有效)。也就是说,角色不动,UI 工作正常。 其次,在我触摸 UI 元素后,如果我想让角色移动并触摸到 UI 元素之外,第一次触摸没有任何反应,但第二次及更多触摸后,角色开始按我的意愿移动。
在 UI 元素中我使用了按钮和事件触发器。
请提供任何帮助...
【问题讨论】:
标签: user-interface unity3d touch 2d platform