You*_*wad 5 resize ios sprite-kit swift
我的iOS游戏中有多个游戏对象,其中一些游戏对象的分辨率高于其他游戏对象.用于游戏对象的图形在运行时随机选择.我想确保它们在使用时都没有超过一定的大小,所以我设计了以下算法:
while self.spriteNode.rSize.width > 100 && self.spriteNode.rSize.height > 100 {
self.xScale -= 0.01
self.yScale -= 0.01
}
Run Code Online (Sandbox Code Playgroud)
其中spriteNode是纹理是图形的对象,而rSize是SKSpriteNode上的扩展计算属性,它返回节点累积帧的大小.
通常,这会导致无限循环.有什么问题?
更新1
根据LearnCocos2D的评论,我尝试了以下内容:
let reqXScale = 50/self.spriteNode.rSize.width
let reqYScale = 50/self.spriteNode.rSize.height
self.xScale = reqXScale
self.yScale = reqYScale
Run Code Online (Sandbox Code Playgroud)
虽然这解决了无限循环问题,但是某些对象被压扁而不是保持其原始宽高比.
另外,这是定义rSize的代码:
var rSize: CGSize {
return self.calculateAccumulatedFrame().size
}
Run Code Online (Sandbox Code Playgroud)
我之前已多次使用过它.
我弄清楚了.我使用随机宽度,因为这是我需要的.
// Scaling
let aspectRatio = self.spriteNode.rSize.width/self.spriteNode.rSize.height
let randWidth = CGFloat(rand(60, 90))
self.spriteNode.size = CGSize(width: randWidth, height: randWidth/aspectRatio)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9496 次 |
| 最近记录: |