如何使用 cocos2d 在自顶向下视图中的精灵下放置阴影
Posted
技术标签:
【中文标题】如何使用 cocos2d 在自顶向下视图中的精灵下放置阴影【英文标题】:how to drop shadows under sprites in Top-down view with cocos2d 【发布时间】:2014-03-03 01:24:53 【问题描述】:我刚开始学习 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 日编辑
我设法让精灵在图块下显示阴影叠加,它看起来没问题,直到一个图块必须在另一个具有非零顶点 Z 值的图块上投下阴影。我尝试创建额外的阴影精灵,这些精灵可以缩放并显示在其他图块的顶部(通常是上升或下降),但我遇到了动画问题(平铺,平铺)。
【问题讨论】:
【参考方案1】:为什么要把问题复杂化。
只需使用您最喜欢的图形编辑程序创建阴影外观的投影并将其保存为 png。当物体被抬起时,将你的 shadowSprite 插入你被抬起的物体后面(你可以根据你认为你的光源在哪里左右移动它)。
当用户放下对象时,显示可以保留在对象下方并随其移动,当再次提起项目时,它会自行可见。
【讨论】:
是的,我就是这样做的。问题,我很抱歉 - 我应该在我的问题中提到它,是玩家有可能一次移动许多瓷砖,所以一个瓷砖可能会在当时上升的地方投下阴影向上瓷砖。我将编辑问题以上是关于如何使用 cocos2d 在自顶向下视图中的精灵下放置阴影的主要内容,如果未能解决你的问题,请参考以下文章