有没有一种方法可以使用SKSpriteNode和PhysicsBody参数来创建SpriteKit中的软体?

3
我有一个精灵,它会落到屏幕底部:
// 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;

有没有一种方法可以让它在撞击屏幕底部时两侧凸出?可能是像果冻一样柔软的物体,保留一定的形状但在自身重量下会凸出。希望你能理解...

这确实是一个棘手的问题。您将需要在-didBeginContact和-didEndContact方法之间进行一些严肃的计算,基于接触点处精灵的SKPhysicsBody中的速度和其他参数。 - ZeMoon
好问题!也许你可以使用关节(https://developer.apple.com/Library/ios/documentation/SpriteKit/Reference/SKPhysicsJoint_Ref/Reference/Reference.html#//apple_ref/doc/uid/TP40013044)来“解决”这个问题? - AndrewShmig
2个回答

2

1
更改了链接。谢谢。 - Hassy
@Hassy 我找到了很多类似的例子,但没有人解释如何将纹理应用于这样的“软体”。也许你有一个这种情况的例子吗? - Vyachaslav Gerchicov

1
快速简单的方法而无需使用数学: 1. 使用Flash来执行您的盒子变形动画。 2. 将Tweened框架导出为精灵表(纹理集)。 3. 在场景中与边缘物理体接触时,对纹理集进行动画处理。
您的盒子将落下,接触时动画分离的图像,以给人留下其扭曲/膨胀侧面的印象。
我使用了这种方法,它起作用 - 换句话说,它给出了期望的效果,从我的角度来看这是重要的 - 您的玩家不在乎您如何做到,只要它看起来很棒。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接