我刚开始学习OpenGL和cocos2d,我需要一个建议。 我正在编写一个允许玩家触摸并在屏幕上以自上而下的视图移动矩形的游戏。每次触摸一个矩形时,它会沿z方向向上移动(朝向屏幕),并缩放一点,使其看起来比其余部分更近。触摸结束后,它会下降到z = 0。
我希望上升的矩形在它们下方留下阴影,但无法让它发挥作用。您会建议采用什么方法来获得最佳结果?
这是我到目前为止所拥有的。 在设置过程中,我打开深度缓冲区然后: 1.所有纹理都是用CCRenderTexture生成的 2.生成的纹理用作图集来创建CCSpriteBatchNode 3.触摸矩形(平铺)时:
static const float _raisedScale = 1.2;
static const float _raisedVertexZ = 30;
...
-(void)makeRaised
{
_state = TileStateRaised;
self.scale = _raisedScale;
self.scale = _raisedScale;
self.vertexZ = _raisedVertexZ;
_glowOverlay.vertexZ = _raisedVertexZ;
_glowOverlay.opacity = 255;
}
辉光覆盖用于“点亮”矩形。
之后,我使用-(void)update:(ccTime)delta
有没有办法让OpenGl使用cocos为我投下阴影?例如,使用着色器或OpenGL阴影。或者我是否必须使用纹理叠加来模拟阴影?
你推荐什么?你会怎么做?
抱歉新手问题,但这对我来说真的很新,我真的需要你的帮助
3月6日编辑
我设法在瓷砖下面获得了带有阴影叠加显示的精灵,它看起来没问题,直到一个瓷砖必须在具有非零vertexZ值的另一个瓷砖上投下阴影。我试图创建额外的阴影精灵,这些精灵将被缩放并显示在其他图块的顶部(通常是上升或下降),但我有动画问题(平铺,平铺)。
答案 0 :(得分:3)
为什么会使问题复杂化。
使用您喜欢的图形编辑程序简单地创建阴影的外观投影并将其保存为png。当物体被抬起时,将shadowSprite插入提升的物体后面(您可以根据您认为光源的位置向左/向右移动)。
当用户将对象放下时,节目可以保留在对象下面并随之移动,使其在物品再次抬起时自动显示。