Как принудить маятниковый путь
Итак, у меня есть спрайт, и у меня есть платформа над ним. Спрайт начинается в точке (0,scene.frame.size.height/2), а платформа - в (scene.frame.size.width/2,scene.frame.size.height-10). Таким образом, спрайт находится слева, а платформа расположена по центру вверху экрана.
Я собираюсь приложить мощный импульс к спрайту. Вектор импульса будет иметь X, но не Y. В принципе, я собираюсь бросить это правильно.
Это должно идти под платформой, и это будет. Я хочу, чтобы он шел по маятниковому пути с точкой поворота, являющейся центром платформы. Более того, я хочу форсировать этот путь. Независимо от объекта х импульс, я хочу, чтобы он качался вдоль этого маятникового пути, не проходя прямо под ним
Если это поможет картина качается с лозы. Я хотел бы, чтобы он принимал во внимание скорость спрайтов, прежде чем схватиться за лозу, но в отличие от реального мира, я хочу, чтобы он заставлял спрайт падать под углом и обратно на угол через маятниковую дорожку.
Мне трудно понять, как я могу поступить примерно так, поэтому любая помощь будет принята с благодарностью. Я знаю, что мне, вероятно, понадобится соединение, чтобы соединить их, и что, если это будет весь импульс Y, я беспокоюсь о том, что, возможно, мне удастся просто с помощью ограничительного сустава, но это усиление пути маятника и преобразование части импульса, которая Я застрял на.
Заранее благодарю за всю вашу помощь.
1 ответ
Вот пример того, как реализовать SKPhysicsJointPin:
-(id)initWithSize:(CGSize)size {
if (self = [super initWithSize:size]) {
CGPoint location = CGPointMake(self.frame.size.width/2, self.frame.size.height/2);
// Create the pendulum's pivot
SKSpriteNode *sprite = [SKSpriteNode spriteNodeWithColor:[SKColor whiteColor] size:size];
sprite.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:sprite.size];
sprite.physicsBody.dynamic = NO;
sprite.position = location;
sprite.size = CGSizeMake(8, 8);
[self addChild:sprite];
location = CGPointMake(self.frame.size.width/2-100, self.frame.size.height/2);
size = CGSizeMake(50, 200);
// Create the pendulum's bob
SKSpriteNode *sprite2 = [SKSpriteNode spriteNodeWithColor:[SKColor whiteColor] size:size];
sprite2.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:sprite.size];
sprite2.physicsBody.dynamic = YES;
sprite2.physicsBody.affectedByGravity = YES;
sprite2.physicsBody.linearDamping = 0;
sprite2.physicsBody.mass = 0.1;
sprite2.size = CGSizeMake(32, 32);
sprite2.position = location;
[self addChild:sprite2];
CGPoint point = CGPointMake(self.frame.size.width/2, self.frame.size.height/2);
// Create a joint that connects the pivot and the bob
SKPhysicsJointPin *pinJoint = [SKPhysicsJointPin jointWithBodyA:sprite.physicsBody
bodyB:sprite2.physicsBody anchor:point];
// Add the joint to the world
[self.physicsWorld addJoint:pinJoint];
}
return self;
}