gpt4 book ai didi

sprite-kit - 在 Sprite Kit 中显示像素艺术的最佳方式是什么?

转载 作者:行者123 更新时间:2023-12-03 16:46:56 25 4
gpt4 key购买 nike

我很好奇如何为我的游戏显示像素艺术。现在我只是将 SKScene 的大小调整为 sceneWithSize:CGSizeMake(256, 192) 这是正确的方法还是有更好的方法来进行这种排序任务?

最佳答案

首先,使用场景的默认大小 - 您不需要缩放或更改它们的大小,这很糟糕。

接下来只需使用最近邻缩放方法预先缩放您的 Sprite (例如在 Photoshop 中) - 这样可以保持像素分离并且不会引入抗锯齿。

例如,如果您有原始的 32x32 资源,请将其缩放到 64x64 或 128x128 并在游戏中使用。它看起来很棒。

另一种方法是让资源保持原始大小,但在运行时对其进行缩放。

这里 SKSpriteNode 的 .xScale 和 .yScale 属性就派上用场了。

但是如果你缩放你的 Sprite ,它就会失去它的脆性——抗锯齿伪影会到处出现。

您有两种方法来处理这个问题 - 首先创建纹理并将其过滤方法设置为最近邻,如下所示:

texture.filteringMode = SKTextureFilteringNearest;

但这很快就会失控,所以我建议改用 SKTextureAtlas 上的类别:

SKTextureAtlas+NearestFiltering.h

#import <SpriteKit/SpriteKit.h>

@interface SKTextureAtlas (NearestFiltering)

- (SKTexture *)nearestTextureNamed:(NSString *)name;

@end

SKTextureAtlas+NearestFiltering.m

#import "SKTextureAtlas+NearestFiltering.h"

@implementation SKTextureAtlas (NearestFiltering)

- (SKTexture *)nearestTextureNamed:(NSString *)name
{
SKTexture *temp = [self textureNamed:name];
temp.filteringMode = SKTextureFilteringNearest;
return temp;
}

@end

这样你就可以通过调用这个方法来创建SKSpriteNodes:

SKSpriteNode *temp = [[SKSpriteNode alloc] initWithTexture:[self.atlas nearestTextureNamed:@"myTexture"]];

关于sprite-kit - 在 Sprite Kit 中显示像素艺术的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24253518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com