将UI挂靠在camera上,移动camera后 ,Ui点击无法触发事件,应该是将camera 的变换施加到了UI点击上,然后在判断是否在点击区域时,发生了错误,这个算bug么?
是cocos2dx 3.4版本
一会我试试看
好的,等你的答复
有结果了么?版主?
我个人理解来看,这不算Bug。camrea,相当于人得眼睛,你只是移动了观察的点,
其实就相当于把你眼睛和手从身体上分离开来,这时候你眼睛看到的东西,你手摸的到吗?
并没有实际更改这个位置上物体的坐标…Button还在原来的位置上,
如果你点击Button原来位置,就会发现触发了点击。
UI点击判定只是根据原始坐标的吧。
当时我调试了一下,看到在做碰撞检测的时候,camera的变换也施加UI,所将点击点转化到UI节点的坐标后,就不会出现点击不到的情况。我不知道你那边是不是能重新?
在点击检测是在下面的函数进行的:
bool Widget::onTouchBegan(Touch *touch, Event *unusedEvent)
{
**********************
_touchBeganPosition = touch->getLocation();
if(hitTest(_touchBeganPosition) && isClippingParentContainsPoint(_touchBeganPosition))
{
_hitted = true;
}
}
hitTest(_touchBeganPosition),里面确实会因为camera的移动,导致点击区域的起始点发生变化
能提供个重现的Demo吗?
不好意思啊,demo可能不方便提供,我说一下大概的流程的.
由于某些原因 ,我在战斗场景中创建了一个新的正交摄像头(default类型),直接替换掉了场景默认的那个camera(引擎里面每次rander的时候都是用的新的正交摄像头), ,然后将UI挂靠在新的正交摄像头下。结果就出现上面的问题!
我不知道是不是一个场景中同时存在两个相同类型的摄像头会不会出问题?
当然,我直接使用默认的摄像头,然后将UI挂靠在它上 ,当移动摄像头后,UI也是点击不接受响应
不知道楼主解决了吗?我给对应node设置了cameramask依然不行,我觉得就像楼主说的应该是摄像机移动导致的视角的问题,我怀疑跟Z坐标有关,但是我改变了Z坐标,依然解决不了问题
楼主我是在update里面一直将camera的position设置成一个精灵的position值,然后镜头一直跟着他移动,然后某一刻加入一个按钮在这个position上面一点距离,然后就点击不到它,在某个位置可以点到,但是直接点就是点不到