swift - SKAction.moveBy 不工作,我不知道为什么
问题描述
我一直在关注 Jared Davidson 的教程How to make Flappy Bird,但我不知道为什么使用 SKAction.moveBy 的函数之一不起作用。我认为部分问题在于它可能处于横向模式。用户应该触摸屏幕,这会导致幽灵跳跃并且障碍物开始移动。有人请帮忙。这是我的一个功能的代码:
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?)
{
if (gameStarted == false)
{
gameStarted = true
let spawn = SKAction.run(
{
() in
self.createObstacles()
})
let delay = SKAction.wait(forDuration: 2.0)
let spawnDelay = SKAction.sequence([spawn, delay])
let spawnDelayForever = SKAction.repeatForever(spawnDelay)
self.run(spawnDelayForever)
let distance = CGFloat(self.frame.width + 20)
let moveObstacles = SKAction.moveBy(x: distance, y: 0, duration: TimeInterval( 0.01*distance))
let removeObstacles = SKAction.removeFromParent()
moveAndRemove = SKAction.sequence([moveObstacles, removeObstacles])
ghost.physicsBody?.velocity = CGVector(dx: 0, dy: 0)
ghost.physicsBody?.applyImpulse(CGVector(dx: 0, dy: 90))
}
else
{
ghost.physicsBody?.velocity = CGVector(dx: 0, dy: 0)
ghost.physicsBody?.applyImpulse(CGVector(dx: 0, dy: 90))
}
}
解决方案
我最近遇到了同样的问题,并且能够通过移动
let wallDistance = CGFloat(self.frame.size.width + wallPair.frame.width)
let moveWall = SKAction.moveBy(x: -wallDistance, y: 0, duration:
TimeInterval(0.008 * wallDistance))
let removeWall = SKAction.removeFromParent()
moveAndRemove = SKAction.sequence([moveWall, removeWall])
在 createWalls 内创建顶墙和底墙的位置下方。我把它放在 setScales 下。
然后你添加
wallPair.run(moveAndRemove)
在您将 topWall 和 bottomWall 添加为子项的位置下。
推荐阅读
- nested - 您可以使用动态实例化的对象调用赛普拉斯中的方法吗?
- java - 尝试在空对象上调用虚拟方法 'void androidx.appcompat.widget.Toolbar.setNavigationIcon(android.graphics.drawable.Drawable)'
- image - 是否可以将 coreml 模型中输入张量的类型从多数组更改为图像?
- spring-security - 不允许直接调用微服务。只允许通过 Zuul API Gateway
- powershell - 为每个文件创建文件夹并将文件移动到文件夹中
- javascript - Html 视频支持不同的视频 src 类型
- git - 每当我提交时,它都会链接到我的另一个 github 帐户的用户名
- selenium - Selenium 测试因最近将 safari 更新到版本 13 而中断?
- spring - Spring 方法级别安全性获取 null 属性 EL1007E:在 null 上找不到属性或字段“价格”
- php - 我想删除重复的``````如果它们是连续的但我的条件“if($value ===”“)”不起作用