我试图通过设置它的速度来移动带有物理的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];