【发布时间】:2016-06-03 22:28:23
【问题描述】:
我正在尝试在 Unity 中实现类似于 How to increase (animate) the width of the square on both ends 的功能。如何确定增加(精灵的)宽度以填充整个屏幕宽度的比例?
更新
下面是我为扩展精灵宽度以占据全屏宽度而实现的 Swift 代码:
func expandEnemy () {
spritePosBeforeScaleX = CGPointMake((enemy?.sprite.position.x)!, (enemy?.sprite.anchorPoint.y)!)
enemy?.sprite.anchorPoint = CGPointMake((enemy?.sprite.position.x)! / self.size.width, (enemy?.sprite.anchorPoint.y)!)
let enemyScalingAction = SKAction.scaleXTo(self.size.width / (enemy?.sprite.size.width)!, duration: 1.0)
enemy!.sprite.runAction(enemyScalingAction)
delay(0.1)
{
center = CGPointMake(enemy!.sprite.size.width / 2 - (enemy!.sprite.size.width * enemy!.sprite.anchorPoint.x), enemy!.sprite.size.height / 2 - (enemy!.sprite.size.height * enemy!.sprite.anchorPoint.y))
enemy!.sprite.physicsBody = SKPhysicsBody(rectangleOfSize: enemy!.sprite.size, center: center)
}
}
【问题讨论】:
-
你能解释一下你为什么要这样做吗?也许还有另一种方法可以做到这一点
-
@Programmer 我想统一完成链接中所做的事情 - 在两端扩展正方形(游戏对象)的宽度,直到它占据屏幕的宽度。 KnightOfDragon 的方法是缩放宽度以使其具有动画效果。我想使用相同的方法,但我对另一种方法持开放态度,因为我刚刚意识到这种方法会对具有多种颜色的精灵有问题,因为它们也会拉伸,例如(选中的块看起来不太好当以类似的方式拉伸时)。我希望这能让我更好地了解我想要完成的工作。
-
@Programmer 我会看一下,我应该有一个示例,我在 Swift 中实现了解决方案。找到问题后,我会更新问题。但正如我所提到的,拉伸宽度方法存在问题,因为它会破坏具有不止一种颜色的精灵。也许另一种方法可能是采用一个精灵,它是原始精灵的一条带(例如,如果精灵是 50x50,原始精灵的 5x50 部分),这将在原始精灵的两端重复动画,直到整个宽度被覆盖。请让我知道您对这种方法的看法。
-
@Programmer 我刚刚用 Swift 实现更新了这个问题。