之前在做一个关于触摸框的项目时候,因为触摸框的校准问题,所以当用户点了一个点的时候,显示在另外一个地方,所以就提出了需要对这个点进行重新映射把他偏移回来的需求,虽然最后这个项目靠着对触摸框的精准校准最终这个需求被解决了。但如果当时没解决我会怎么做呢?
直到我最近在重新仔细看touchScript框架的东西的时候,才发现touchScript这个框架真的很好,他的作者早就有这方面的思索了,并提供了一个叫做ICoordinatesRemapper的接口,你只需要对这个接口进行实现,就能简简单单对触点进行X,Y的校准。
那么我们就看来简单记录一下这个操作吧
官网上有简单的说明文档,他说到每个input source的类下都有一个相关重新校准的属性,允许用户实现这个接口就可以改变触点的位置。
而这个接口只包含了一个Remap的方法,你只需要对这个方法实现。
这种方式能让你在你的触屏设备没完全精准的情况下特别有用,这种情况当你是用在投影墙或者触摸框上的时不时发生。
我们打开一个inputsource的脚本,发现了这个属性。
当他没被赋值时,就不进行校准。
然后我们实现一个简单的类并实现ICoordinatesRemapper接口
忘了说这个接口位于命名空间touchscript.inputsources下。
他也简单,构造函数传进你需要偏差的值,然后remap这个方法中进行偏移,并返回给系统。
实现这个方法后回到Inputsource的类里,在onenable这个方法里对属性进行赋值,传递一个实现了相应接口。
这样我就对触点向上偏移了100个像素。然后回Unity里进行测试。
随便一个脚本注册一个touchbegin的方法,touchbegin里直接打出position点。
然后我们点屏幕左下角的时候,会发现这个点已经被向上偏移了100了。
原来一切都如此之简单。
网友评论