Есть ли способ сделать мягкое тело с помощью Spritekit, используя параметры SKSpriteNode и PhysicsBody?

У меня есть следующий спрайт, который падает в нижнюю часть экрана:

// The View
self.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame];
self.physicsWorld.contactDelegate = self;

// The Sprite
SKSpriteNode *cube = [[SKSpriteNode alloc] initWithImageNamed:@"cube"];
[cube setPosition:CGPointMake(160,250);
[self addChild:cube];

// The Physics
cube.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:cube.frame.size];
cube.physicsBody.dynamic = YES;
cube.physicsBody.affectedByGravity = YES;
cube.physicsBody.mass = 0.02;

Есть ли способ сделать так, чтобы его стороны выпирали, когда он достигает нижней границы экрана? Что-то похожее на желе или мягкое тело, которое до некоторой степени сохраняет свою форму, но выпирает под собственным весом? Я надеюсь в этом есть смысл....


person ultimal    schedule 13.03.2014    source источник
comment
Это действительно непростой вопрос. Вам придется провести серьезные расчеты между методами -didBeginContact и -didEndContact на основе скорости и других параметров в SKPhysicsBody спрайта в точке контакта.   -  person ZeMoon    schedule 13.03.2014
comment
Отличный вопрос! Возможно, вы можете решить эту проблему с помощью суставов ( developer.apple.com/Library/ios/documentation/SpriteKit/)?   -  person AndrewShmig    schedule 14.03.2014


Ответы (2)


Посетите сайт https://gist.github.com/kazukitanaka0611/4b9d4ac9dff0cd317b6c, там есть объяснение и исходный код мягких тел (желе) в наборе спрайтов

person Hassy    schedule 28.03.2014
comment
Ссылку поменял Спасибо - person Hassy; 13.12.2016
comment
@Hassy Я нашел много подобных примеров, но никто не объясняет, как применить текстуру к такому мягкому телу. Может быть, у вас есть пример для этой ситуации? - person Vyachaslav Gerchicov; 29.05.2019

быстрый и простой способ без математики: 1 используйте вспышку, чтобы анимировать деформацию коробки. 2 экспортировать анимированные кадры в виде листа спрайтов (атлас текстур) 3 анимировать атлас текстур при контакте с граничным физическим телом в вашей сцене.

ваша коробка упадет и при контакте оживит отдельные изображения, чтобы создать впечатление ее искривленных/выпуклых сторон.

я использовал этот метод, и он работает - другими словами, он дает желаемый эффект, что, на мой взгляд, важно - вашим игрокам все равно, как вы это сделали, главное, чтобы это выглядело великолепно.

person mark    schedule 25.03.2014