Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opengl es 如何使用cocos2d在自顶向下视图中将阴影放置在精灵下_Opengl Es_Cocos2d Iphone - Fatal编程技术网

Opengl es 如何使用cocos2d在自顶向下视图中将阴影放置在精灵下

Opengl es 如何使用cocos2d在自顶向下视图中将阴影放置在精灵下,opengl-es,cocos2d-iphone,Opengl Es,Cocos2d Iphone,我刚开始学习OpenGL和cocos2d,我需要一个建议。 我正在写一个游戏,玩家可以在屏幕上以自上而下的方式触摸和移动矩形。每次触摸矩形时,它都会沿z方向向上移动(朝向屏幕),并稍微缩放,使其看起来比其他矩形更接近。触摸结束后,它下降到z=0 我希望上升的矩形在它们下面投下阴影,但无法使其工作。您会推荐哪种方法以获得最佳效果 这是我到目前为止所拥有的。 在设置过程中,我打开深度缓冲区,然后: 1.所有纹理都是使用CCRenderTexture生成的 2.生成的纹理用作创建CCSpriteBat

我刚开始学习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值。我试图创建额外的阴影精灵,这些精灵将被缩放并显示在其他瓷砖的顶部(通常上升或下降),但我在动画方面遇到了问题(向上平铺,向下平铺)。

为什么要使问题复杂化

只需使用您喜爱的图形编辑程序创建阴影的投影,并将其保存为png。提升对象时,将阴影精灵插入提升对象的后面(您可以根据您认为光源的位置将其向左/向右移动)


当用户将对象放下时,显示可以保持在对象下方并随对象移动,使其在再次提起物品时自可见。

Eyeah,我就是这样做的。问题是,我很抱歉,我应该在我的问题中提到,玩家有可能一次移动多块瓷砖,所以有可能一块瓷砖会在一块瓷砖上投射阴影,然后升起瓷砖。我将编辑这个问题