我正在为iOS8制作一个球/桨"突破"风格的游戏,其中块从屏幕顶部掉落.
我决定在sprite-kit中试用Apple的新SKLightNode,它工作得非常好,从屏幕顶部投射出一个光:
在levelScene.h中:
#import <SpriteKit/SpriteKit.h>
Run Code Online (Sandbox Code Playgroud)
在levelScene.m中:
-(id)initWithSize:(CGSize)size {
...
SKLightNode* light = [[SKLightNode alloc] init];
// light.enabled = YES;
light.categoryBitMask = lightCategory;
light.falloff = 1;
light.ambientColor = [UIColor whiteColor];
light.lightColor = [[UIColor alloc] initWithRed:0.0 green:1.0 blue:0.5 alpha:0.5];
light.shadowColor = [[UIColor alloc] initWithRed:0.0 green:0.0 blue:0.0 alpha:0.2];
light.position = CGPointMake(CGRectGetMidX(self.frame), self.frame.size.height - 20);
[self addChild:light];
...
}
Run Code Online (Sandbox Code Playgroud)
并从靠近屏幕底部的球拍投下阴影:
-(id)initWithSize:(CGSize)size {
...
self.paddle.shadowCastBitMask = lightCategory;
...
}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试通过定义我的矩形(或块)spriteNodes的shadowCastBitMask来使我的下降块投射阴影时,不同于桨,在整个游戏中以不同的间隔添加,我在整个屏幕中体验到一种奇怪的剪裁并且其所有内容都调整到原始大小的60%-80%左右,略微垂直挤压.它只适用于最短暂的时刻,所以我无法理解它甚至对图像做了什么,更不用说为什么了.我在网上找不到与这个bug有关的内容.
我可以说,每当一个块从屏幕顶部进入时,它就会被复制,甚至是第一次,这表明它与同时调用的多个实例无关.由于桨(以及测试时的球)似乎没有问题地投下阴影,我只能假设这是在游戏过程中进行呼叫的事实,而不是在它开始之前,就像在情况下一样. paddle,或者我的-addRectangle调用中有一些我缺少的东西.
所以,这里是 - (void)addRectangle的全部,shadowCastBitMask = ...调用接近结尾:
- (void)addRectangle {
// Create sprite …Run Code Online (Sandbox Code Playgroud)