小编Mic*_*mes的帖子

如何使用SpriteKit将精灵跳转到特定高度?

我正在尝试使用applyImpulse使sprite跳转到特定高度.在下面的示例代码中,动态黑色圆圈跳转到与静态红色圆圈相同的高度,但它仅适用于kludge.

如果我的物理学是正确的,那么将射弹发射到高度Y所需的初始垂直动量由质量*sqrt(2*重力*Y)给出.然而,这个公式导致黑圈移动很少.

通过反复试验,我发现通过将脉冲矢量的垂直分量乘以12.3,我可以或多或少准确地使红色圆圈跳跃,如下面的代码所示.

这似乎是完全随意的,让我发疯.我显然做错了什么.这样做的正确方法是什么?

以下是我认为相关的代码:

let dy = mass * sqrt( 
    2 * -self.physicsWorld.gravity.dy 
    * (fixedCircle.position.y-jumpingCircle.position.y)) 
    * 12.3

jumpingCircle.physicsBody?.applyImpulse(CGVectorMake(0, CGFloat(dy)))
Run Code Online (Sandbox Code Playgroud)

如果您希望复制和粘贴,这里是完整的GameScene.swift类...

import SpriteKit

class GameScene: SKScene {

var jumpingCircle = SKShapeNode()
var fixedCircle = SKShapeNode()

override func didMoveToView(view: SKView) {

    self.scaleMode = .AspectFit

    // Create an exterior physical boundary
    self.physicsBody = SKPhysicsBody(edgeLoopFromRect:self.frame)
    self.physicsWorld.gravity = CGVectorMake(0, -5);


    // Create the jumping circle
    jumpingCircle = SKShapeNode(circleOfRadius: 50)
    jumpingCircle.position = CGPoint(x: 100,y: 0)
    jumpingCircle.strokeColor = .blackColor()
    jumpingCircle.physicsBody = SKPhysicsBody(circleOfRadius: 50)
    jumpingCircle.physicsBody?.linearDamping = 0.0 …
Run Code Online (Sandbox Code Playgroud)

animation cocoa-touch ios sprite-kit

7
推荐指数
1
解决办法
714
查看次数

BigQuery SPLIT() 忽略空值

似乎 SPLIT() 将空值视为根本不存在,这会产生意想不到的结果。

例如:

SELECT
  NTH(3, SPLIT(values, ","))
FROM
  (SELECT "a,b,,d,e" as values)
Run Code Online (Sandbox Code Playgroud)

返回“d”,当我希望它返回 NULL 时。您可以看到这对于多行逗号分隔的文本会有什么问题。人们会期望以下查询返回 NULL 和“c”,但它不会:

SELECT
  NTH(3, SPLIT(values, ","))
FROM
  (SELECT "a,b,,d,e" as values),
  (SELECT "a,,c,d,e" as values)
Run Code Online (Sandbox Code Playgroud)

相反,它返回“d”和“d”。

这种行为是设计使然,可以改变,还是有更好的方法来做我正在做的事情?

google-bigquery

5
推荐指数
1
解决办法
550
查看次数

如何检索与 BigQuery 作业关联的用户和 SQL 代码?

出于安全目的,我希望能够审核谁在某个项目中运行了哪些类型的查询。这可能吗?

bq ls -j从命令行使用会提供一些信息;bg show -j多给一点。但既不显示用户也不显示查询本身。

google-bigquery google-cloud-platform

3
推荐指数
1
解决办法
1444
查看次数