- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我不知道如何为 SKTexture 纹理应用 mipmap。我在 Swift 中使用 XCode 8.2.1。
这是我的方法:
override func sceneDidLoad() {
logo = childNode(withName: "logo") as! SKSpriteNode
let texture: SKTexture! = SKTexture.init(imageNamed: "logo")
texture.usesMipmaps = true
logo.texture = texture
}
我用的示例图片png 512*512大小(锅都可以)全尺寸看起来像这样:
然后我想把它的尺寸缩小到128*128像素
例如没有 mipmapping 的输出(只有默认的线性过滤)
他们看起来都一样。所以我认为 mipmaps 不适用。请帮助我,我已经花了 3 天时间尝试解决这个问题。
更新:作为Confused告诉我,我用代码完成了所有工作。创建启用 mipmaping 的纹理,将其分配给 SKSpriteNode,然后通过缩放方法或操作执行缩放。
let texture = SKTexture.init(imageNamed: "logo")
texture.usesMipmaps = true
logo = SKSpriteNode.init(texture: texture)
logo.position = CGPoint(x: 0, y: 0)
self.addChild(logo)
//logo.scale(to: CGSize(width: 128, height: 128))
let scaleAction = SKAction.scale(to: CGSize(width: 128, height: 128), duration: 1)
logo.run(scaleAction)
最佳答案
如果 Xcode SpriteKit 场景编辑器在您的代码激活 mipmapping 之前调整您的纹理大小,一点也不奇怪。这意味着您的纹理的 128x128 版本具有 mipmapping,因为这就是 Xcode 和 SpriteKit SceneEditor 合谋存储为纹理的内容。
因此,不要在场景编辑器中设置比例,而是在代码中打开 mipMapping 后,使用它来缩放 SKSpriteNode:
https://developer.apple.com/reference/spritekit/skspritenode/1645445-scale
和/或试验 SKAction 缩放操作:
https://developer.apple.com/reference/spritekit/skaction
这样你就可以绝对确定事件的顺序是
希望这能奏效。
关于ios - SpriteKit SKTexture mipmap 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41788171/
我在这样的类中定义了一个 SKTexture 数组: var walking: Array = [] 然后我在同一个类中有一个函数返回该数组的一个元素: func running() -> SKTex
我有一个问题,在过去的几个小时里我一直在绞尽脑汁。我正在创建一个平铺 map ,作为平铺的纹理,我有一些 Sprite 表。 我可以使用以下 spritesheet 来演示我的问题: 现在我使用 SK
有什么方法可以让 SKTexture 动画化(假设它是一个红色方 block ),这样就可以像页面一样从左到右“剥离”,露出另一个 SKTexture 下面(比如说一个蓝色方 block )? 示例:
我有一个图像集,它们是 80 x 80。但是 SKTexture 说有些帧是 33x80,尽管它们显然是 80x80。怎么了?我的动画在运行时看起来很不对劲。 代码如下: SKTextureAtlas
for building in self.buildingArray { if building.contains(location) { upgradeArr
是否有可能从 SKSpriteNode 的 SKTexture 获取当前图像名称? 我是 SpriteKit 的新手,我正在编写一个小游戏。我需要检测忍者何时会击中敌人。像这样 我正在做 SKActi
这个问题在这里已经有了答案: Is it possible to make an Array extension in Swift that is restricted to one class?
正如标题所说,我的 SKTexture 并没有像我期望的那样改变。 这就是我在玩家类中声明单例的方式: static let sharedInstance = NHPlayer() 我有这个功
也许这很容易,但我迷路了。 我有一个项目,我必须制作一个使用 8 个 jpg 模拟页面打开的全屏动画。所以我正在做的是: 我有一个全屏显示的 SKSpriteNode 制作一个包含 8 个 SKTex
也许这很容易,但我迷路了。 我有一个项目,我必须制作一个使用 8 个 jpg 模拟页面打开的全屏动画。所以我正在做的是: 我有一个全屏显示的 SKSpriteNode 制作一个包含 8 个 SKTex
SKEffectionNodes 有一个 shouldRasterise “开关”,可以将它们烘焙到位图中,并且在受效果影响的底层节点发生更改之前不会更新它们。 但是我找不到从这个光栅化“图像”创建
我正在尝试在 SpriteKit 中制作拼图游戏。为了让事情变得更容易,我使用 9x9 方形瓷砖板。每个图 block 上都有一个 childNode,其中包含来自该区域的图像。 但这就是我的问题的开
我正在制作一个主角旋转的游戏,但是,我想使用 SKTexture 为角色 Sprite 节点设置自定义边界。然而,当我这样做时,我的角色不会旋转。当我使用常规的circleOfRadius(因为我的
我的问题是,当我玩游戏时,即使敌人没有触及我的角色,而是飞得离他很近,我也会失去生命。我了解到问题是我角色的透明空间与敌人的透明空间接触了。 我想按照 SKPhysicsBody documentat
我正在尝试为动画中的单个 SKTextures 设置持续时间。 armsAtlas 纹理图集下方。我想将 upTexture 随机设置为持续 1-4 秒,然后将 downTexture 设置为持续 0
我正在尝试为游戏创建背景并有两个背景图像。我可以使用两个不同的 SKSpriteNode()、SKTexture、SKAction.sequence..etc 和一些数学将它们拼接在一起,但结果有点不
我目前在 SpriteKit 和 SKTexture 预加载方面遇到奇怪的间歇性问题。我有多个图像数组,我按以下格式预加载: - (NSDictionary *)loadTexturesWithNam
I've now filed a bug for the issue below. Anyone with a good workaround? 我尝试将 SKTexture 保存到文件中,然后再次加
在 SpriteKit 中,如果你使用 [SKTexture textureWithImageNamed:] 方法加载图像,它会首先搜索你的包,然后是图集,如果找不到你的纹理,它会创建一个占位符图像并
我正在使用带有图像的 SKTexture 并设置 SKPhysicsBody。像那样: var moleTexture = SKTexture(imageNamed: "moleTop1") left
我是一名优秀的程序员,十分优秀!