【问题标题】:Arithmetic operator on negative numbers in SwiftSwift中负数的算术运算符
【发布时间】:2019-04-24 14:59:47
【问题描述】:

我正在使用 Swift 学习一些游戏开发,因此我想知道某个节点何时在 Z 轴上更远。我的计算是:

if zPositionOfBowlingBall > -7 { 
  // Do something here
}

因此,如果位置大于-7,则以-8为例执行代码块。这永远不会被调用。我猜这就是签名 int 的工作方式。如果有人能解释一下,这将非常有助于理解以及正确的语法是什么。

在此处更新完整代码

extension ViewController: ARSCNViewDelegate {
    func renderer(_ renderer: SCNSceneRenderer, didSimulatePhysicsAtTime time: TimeInterval) {
        bowlingBall.removeBowlingBallWhenZPositionIsReached()
    }
}

func removeBowlingBallWhenZPositionIsReached() {
        guard let bowlingBallNode = bowlingBallNode else {return}
        let bowlingBallPosition = bowlingBallNode.presentation.worldPosition
        let zPositionOfBowlingBall = Int(bowlingBallPosition.z)
        if zPositionOfBowlingBall > -7 {
            performFadeOutOnBowlingBallWith(duration: 2.0)
        }
    }

【问题讨论】:

  • 是的,我试过了。基本上在这个块中,我删除了一个节点。但它会立即删除它我只想在节点超过 -7 时删除它我可以做 == -7 但这不是我想要的。
  • 你的评论没有澄清太多
  • @GustavoVollbrecht 很抱歉。不认为这会对问题产生影响
  • 贴更多相关代码
  • @GustavoVollbrecht 更新了上面的代码。简而言之,当球在 z 轴上的距离超过 -7 时,将其移除。或者就我而言,我将其淡出。

标签: swift math int


【解决方案1】:

-8 小于 -7,因此您的代码应该是:

if zPositionOfBowlingBall < -7 { 
  // Do something here
}

如果您希望值大于 7 而不管符号,您可以使用绝对值。

abs(&lt;#value#&gt;)

【讨论】:

  • 谢谢,请看我上面的cmets,也许我没有解释清楚我想要什么。
  • 我已经接受了,因为你是对的,让我感到困惑的是,我的球被立即移除,因为委托函数被称为 60fps,所以我需要执行额外的检查。
猜你喜欢
  • 1970-01-01
  • 2022-01-07
  • 1970-01-01
  • 2012-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-06
相关资源
最近更新 更多