我有一个精灵节点出现和下降,以响应其附加的physicsBody
上的重力。
大
现在,我想使用applyForce
将它向某个方向移动一点,同时它会下降。
不幸的是,无论我physicsBody.mass
或physicsWorld.gravity
有多小,或applyForce
向量有多大,applyForce
向量似乎都会被忽略。< / p>
当我注释掉 self.physicsWorld.gravity
行时,我看到 applyForce
按预期工作
这是我的.h
// GameScene.h
#import <SpriteKit/SpriteKit.h>
@interface GameScene : SKScene
@end
而.m
// GameScene.m
#import "GameScene.h"
@interface GameScene ()
@property NSMutableArray *bubblesToPop;
@end
@implementation GameScene
-(void)didMoveToView:(SKView *)view {
/* Setup your scene here */
self.size = view.bounds.size;
self.physicsWorld.gravity = CGVectorMake(0, 1.0);
SKSpriteNode *sprite = [SKSpriteNode spriteNodeWithImageNamed:@"bubble"];
sprite.yScale = 0.5;
sprite.xScale = 0.5;
sprite.name = @"bubble";
sprite.position = CGPointMake(self.frame.size.width / 2.0, self.frame.size.height / 2.0);
SKPhysicsBody *physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:sprite.frame.size.width];
physicsBody.mass = 0.02;
[physicsBody applyForce:CGVectorMake(900, 900)];
sprite.physicsBody = physicsBody;
[self addChild:sprite];
}
@end
答案 0 :(得分:5)
在Sprite Kit确定力如何影响它之前,身体需要在场景中。在applyForce
到场景后,需要对物理机构进行addChild
调用。
来自Apple的文档:
Sprite Kit中的物理模拟是通过向场景添加物理实体来执行的。物理主体是模拟的物理对象 连接到场景节点树中的节点。它使用节点的节点 位置和方向将自己置于模拟......每一次 场景计算新的动画帧,它模拟效果 连接到节点的物理主体上的力和碰撞 树。它计算最终位置,方向和速度 每个物理机构。然后,场景更新位置和旋转 每个相应节点[强调添加]。
此外,外部因素有助于物理机构受力的影响。例如,在计算应用于物理主体的净力时,必须考虑重力,碰撞和力场(iOS 8)。因此,在Sprite Kit可以确定力如何影响它之前,身体需要在场景中。