对球有冲动。但是这个球在冲动之后一直保持运动,但是我希望它能运动一点。所以这是我正在尝试的:

var impulse:CGFloat = 0.22 // bal impulse

施加冲动:
bal.physicsBody?.applyImpulse(CGVectorMake(50 * impulse, 50 * impulse))

试图限制运动:
  if bal.physicsBody?.velocity.dx > impulse{
        bal.physicsBody?.velocity.dx = bal.physicsBody?.velocity.dx - impulse
    }

但是这最后一段代码得到了这个错误:
Value of optional type CGFloat? not unwrapped, did you mean to use ! or ?

怎么修?

最佳答案

使用 optional 时,始终应使用if let解开它们,因为如果使用?且值是nil,则代码将不会执行,并且您将不知道存在nil值。

像这样使用它:

var impulse:CGFloat = 0.22 // bal impulse

if let body = bal.physicsBody {

     body.applyImpulse(CGVectorMake(50 * impulse, 50 * impulse))

     if body.velocity.dx > impulse {
          body.velocity.dx = body.velocity.dx - impulse
     }
}
else
{
   // bal.physicsBody is nil !
}

关于ios - 可选类型CGFloat的值?没有解包,您是说要使用!要么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30394507/

10-10 15:21