首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >根据节点的旋转将applyForce发送到节点

根据节点的旋转将applyForce发送到节点
EN

Stack Overflow用户
提问于 2015-02-27 17:37:35
回答 1查看 1.4K关注 0票数 2

我使用Xcode 6、SpriteKit和Swift,

我有一个SKSpriteNode,它是新Xcode项目的默认空间映像。这艘宇宙飞船有一个物理体,但不受重力的影响,我想模拟这个空间。

我希望当我点击屏幕时,在节点上施加一种力,这样飞船就可以前进了。问题是,当飞船旋转时,我试着施加力,飞船就不会像我想要的那样前进,而是朝着力的方向前进,这是正常的。

我想知道是否有任何方法可以根据节点的zRotation向其施加力?因此,无论是在哪个方向的飞船,它都会继续前进。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-27 18:19:43

我现在不能试一试,但它应该有效:

代码语言:javascript
运行
复制
// grab the spaceship rotation and add M_PI_2
var spaceShipRotation : CGFloat = spaceShipNode.zRotation
var calcRotation : Float = Float(spaceShipRotation) + Float(M_PI_2);

// cosf and sinf use a Float and return a Float
// however CGVector need CGFloat
let intensity : CGFloat = 10.0 // put your value
let xv = intensity * CGFloat(cosf(calcRotation))
let yv = intensity * CGFloat(sinf(calcRotation))
let vector : CGVector = CGVectorMake(xv, yv)

// apply force to spaceship
spaceShipNode.physicsBody?.applyForce(vector)

你必须学习数学,或者更精确地使用三角学,其中包括: PI,cos,sin,.我不太适应所有这些,尤其是现在没有尝试,但正如我已经告诉过的那样,它应该是有效的。让我知道!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28771058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档