使用Physics移动SKSpriteNode

时间:2014-07-16 22:11:03

标签: sprite-kit velocity skphysicsbody

我试图通过设置它的速度来移动带有物理的SKSpriteNode。我在SKScene的另一个SKNode(地图)之上做这个。 "城市的位置"存储在自定义Location个对象中。

我知道初始SKSpriteNode(船)的位置,我知道所需的位置。根据我的阅读,我可以通过设置它的速度来移动精灵。我这样做:

float dy = _player.desiredLocation.yCoordinate - _mapNode.pin.position.y;
float dx = _player.desiredLocation.xCoordinate - _mapNode.pin.position.x;
_mapNode.pin.physicsBody.velocity = CGVectorMake(dx, dy);

这都在SKScene内的didSimulatePhysics函数内部。一旦用户点击Location,我找到位置并设置速度。这似乎在第一次运作良好,但精灵在随后的时间里遍布整个地方。知道这里可能出现什么问题吗?

PS:设置skView.showsPhysics = YES;会使物理体的圆圈偏离精灵的位置。

在地图节点中:

self.pin = [SKSpriteNode spriteNodeWithImageNamed:[IPGameManager sharedGameData].world.player.ship.type];
self.pin.userInteractionEnabled = NO;
self.pin.position = CGPointMake([IPGameManager sharedGameData].world.player.location.xCoordinate, [IPGameManager sharedGameData].world.player.location.yCoordinate);
self.pin.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:10.0];
self.pin.physicsBody.dynamic = YES;
self.pin.physicsBody.allowsRotation = NO;
self.pin.physicsBody.friction = 0.0;
self.pin.physicsBody.linearDamping = 0.0;
[self addChild:self.pin];

0 个答案:

没有答案