家人们介四怎么肥四哇

您好,convertToNodeSpaceAR这个函数的第二个参数就是输出转化后的坐标,

按照您的说法,


转化了之后,还是会出现错位的情况

您好,我也尝试过了您的做法,但是改过之后飞机都不移动了,这是我的代码,您看下

你的触摸节点还有飞机节点是怎么适配的呀

谢谢您的回复


您看一下,hero是飞机节点。触摸事件直接加载了hero节点上。

你试下定义一个新的node(或者就用canvas的node),widget组件改成全屏适配
image
然后用这个node来触摸试试

您好,我已经在hero节点中添加了这个组件。您看以下

你别再hero上加 :joy:

这个组件是我之前就加过的,Canvas上也有这个组件的

触摸事件你改成canvas上的node试试

您的意思是说,添加全局监听吗?这个我试过的呀,是不对的啊,在Canvas上添加触摸事件的监听就是添加全局监听呀,使用input进行添加的。如果是这样话问题是还在的。

方便发个demo么

我替她试了下你说的,相机获取的坐标再转换下是ok的

		this.node.on(
			cc.Node.EventType.TOUCH_MOVE,
			(event: cc.EventTouch) => {
				let pos = event.getUILocation();

				this.nodes.sprite.position = this.nodes.sprite.parent
					.getComponent(cc.UITransform)
					.convertToNodeSpaceAR(cc.v3(pos.x, pos.y));
			},
			this
		);
  • this.node:canvas 节点
  • this.nodes.sprite:移动的节点

你这种我昨天试过,原始分辨率ok,但是其他分辨率是会偏移的,版本3.7.1

加个相机深度转换就好了,我之前无聊看看3.4编译器与2.0的区别就遇到了这个问题,
当时我还特意做了个笔记【CocosCreate3.4屏幕点击点转换为节点坐标方法】

我在想我以后发帖是不是都要附带个视频,我发的所有内容都是自己验证过的

好吧,那可能我节点弄得不太一样的原因 :crazy_face:

嗯嗯好滴,我刚刚看见您的回复,谢谢您啦

嗯嗯好滴,谢谢您啦,还做了个视频,真的是麻烦您了

嗯嗯好滴,谢谢您的回复,麻烦您啦