作者linjack (嗯)
看板GameDesign
标题Re: [程式] Unity+ex2D v.s. Corona SDK
时间Mon Jul 23 21:20:58 2012
※ 引述《littleshan (我要加入剑道社!)》之铭言:
: ex2D 可以针对一群物件设定显示范围,超过范围的部份不会被画出来。若要实
: 作可卷动的视窗元件,这个功能相当有用。
: Corona 没有这个功能,你得用别的东西把超出范围的部份遮起来。
感谢 littleshan 做的精辟比较,而且对於独立开发者而言非常详细实用,
上次在资策会与奇锐合办的那场演讲听你解说 ex2D 时,我就很好奇
到底 Unity3D + ex2D 与 CoronaSDK (或其他相关的 Lua 套件,如
gideros mobile 或 moaiSDK) 比起来,何者比较适合快速开发 2D 作品
我是对 Clipping 这段有点想提出来讨论的,我理解没错的话这个应该和
Masking 是类似问题,而 CoronaSDK 确实有提供多层次 masking,
包括已经 mask 过的 DisplayObject 再 group 起来然後再 mask 一次,
类似的 setup code 大概如下:
local group = display.newGroup()
local image1 = display.newImageRect( group, "image1.png", 300, 150 )
local image2 = display.newImageRect( group, "image2.png", 300, 150 )
local image3 = display.newImageRect( group, "image3.png", 300, 150 )
image1:translate( center_x, center_y - 200 )
image2:translate( center_x, center_y )
image3:translate( center_x, center_y + 200 )
local mask = graphics.newMask( "mask.png" )
group:setMask( mask )
group:setReferencePoint( display.CenterReferencePoint )
group.maskX = group.x
group.maskY = group.y
只有最後这段 code 是有点怪的,根据 Corona 官方 API Doc,
在 group 上的 mask 设定好後,一定要这样调整 group 的参考原点,
不然 mask 的显示位置会有一个从 group Top/Left 到 Center 点间的距离差
mask 完之後基本上它是可以被当成一个显示范围、点击事件接受范围
都受限的独立元件。当然这样的东西要做成可卷动的视窗元件确实还是
稍嫌原始了,譬如说我得把拖曳距离用在 mask 的移动上,再把负值
用在 group 的位移上,让那个 Clipping 框框看起来是停在原地不动的 ...
不过我没翻过 Corona Labs / Community 那边,搞不好有现成的可用吧 XD
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.136.104.62
※ 编辑: linjack 来自: 220.136.104.62 (07/23 21:24)
1F:推 littleshan:Oh my god 我真的忘了还有 mask 可以用 07/24 10:11
2F:→ littleshan:感谢提醒 07/24 10:11