评论

绘图游戏调色盘取色方法

最近在做一款绘图游戏。需要取出调色盘中的颜色。于是乎就在群里跟大家讨论了一番,下面将实施方案放出,仅供参考。

​前言

最近在做一款绘图游戏。需要取出调色盘中的颜色。于是乎就在群里跟大家讨论了一番,下面将实施方案放出,仅供参考。


松散的调色盘

(此图左侧是调色盘,右侧是画板,绘画功能已经实现)

对于这种调色盘,颜色之间距离比较大,可以使用矩形碰撞的形式,然后每个节点设置上对应的颜色。碰撞后即可获得颜色数据。

不规则的调色盘

(左侧是调色板,右侧是根据取出的数据设置texture生成的图像) 

这种调色盘即使使用多边形碰撞做起来也很麻烦。所以可以采用RenderTexture。取出屏幕每个像素点的颜色。然后根据点击的坐标点的位置取出对应的颜色即可。不过,在取颜色的时候还是遇到了一些问题的。比如使用camera + RenderTexture 取出的图形的范围是缩小的,而且图像是y轴翻转的。虽然是采用RenderTexture,但是方式也有很多种,不为了方便获取,调色板anchor 设置为(0,0)

  1. 直接获取一个像素点的颜色这种方式需要将传入的x和y转换成世界坐标。
  2. 获得整个屏幕的颜色数据,然后根据点击位置转换后的世界坐标。获取像素点。这种方式跟第一种方式区别不大,只是第一种方式每次都要readPixels.而这种方式读 取一次存放好就可以了
  3. 从读取的颜色数据中取出调色盘所对应的 颜色数据,根据点击坐标转换后的本地坐标获取颜色数据。
  4. 使用相机只渲染调色盘大小的RenderTexture。然后使用点击坐标转换后的本地坐标获取数据。这样获取到 数据总是缩小的。可能是我的使用方式不对,不过我调整了相机的ZoomRatio 也能达到现在显示的效果。
  5. 所以右侧显示出来的图像才会大小正好。至于图像Y反转,设置一下图像节点的scaleY为-1 就可以了。

结语

调色盘的获取方案,先总结这么多,其实群友们还提了很多其他的方案,只是没来得及验证。demo已经提交到框架的git中,已有git权限的同学可以更新获取了。长按下方二维码,关注《微笑游戏》公众号,获取更多精彩内容。


点赞 0
收藏
评论
登录 后发表内容