ios - 如何让一个自由下落的 Sprite 节点坐在另一个水平移动的 Sprite 身上

标签 ios objective-c sprite-kit collision-detection skspritenode

如何让一个自由落体的 Sprite 节点坐在另一个水平移动的 Sprite 体上?

现在两个 body 都发生了碰撞。但是水平运动的物体偏离了它的路径,自由落体撞击水平物体后下降。如何修复 Sprite 节点的这种不断变化的设置。

我已经为正确发生碰撞设置了给定的碰撞和类别位掩码。


自由落体属性:

  • affectedbygravity = YES dynamic = YES allowsrotation = NO usesprecisecollisiondetection = YES restitution = 1 摩擦力 = 1.0 角度阻尼 = 0.0 线性阻尼 = 0.0

水平移动体属性

动态=是 受重力影响 = 否 摩擦力 = 1.0

在这个 body 上进行振荡 Action 。

最佳答案

调整质量有助于不使移动物体偏斜。例如试试这段代码,

SKSpriteNode *fallNode = [[SKSpriteNode alloc] initWithColor:[UIColor redColor] size:CGSizeMake(25, 25)];
fallNode.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:fallNode.size];
fallNode.position = CGPointMake(100, 400);
fallNode.physicsBody.mass = 1;
fallNode.physicsBody.allowsRotation = NO;
fallNode.physicsBody.restitution = 0.0;
fallNode.physicsBody.friction = 1.0;
[self addChild : fallNode];

SKSpriteNode *moveNode = [[SKSpriteNode alloc] initWithColor:[UIColor greenColor] size:CGSizeMake(25, 25)];

moveNode.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:moveNode.size];
moveNode.position = CGPointMake(50, 100);
moveNode.physicsBody.mass = 100000;
moveNode.physicsBody.affectedByGravity = false;
moveNode.physicsBody.friction = 1.0;
moveNode.physicsBody.velocity = CGVectorMake(90, 0);

[self addChild : moveNode];

关于ios - 如何让一个自由下落的 Sprite 节点坐在另一个水平移动的 Sprite 身上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28364791/

相关文章:

ios 应用程序使用 icu 编译 sqlite fts,但是当我输入像 "z"这样的字母时,它无法得到完美的答案

ios - ios中的临时分发和应用程序商店分发有什么区别

ios - 带有链接 : disable scrolling, 的 UITextView 已启用用户交互

sprite-kit - 如何给 SCNNode 添加标签?

ios - 如何以编程方式快速设置物理定义?

ios - UITableView 每个行分隔符上不需要的白线

objective-c - 无法理解 Swift 中的特定运算符

ios - 获取自应用程序上次打开以来收到的所有推送通知

swift - SpriteKit : How do I remove objects once they leave the screen?

ios - 使用 UICollectionView 观察 Realm - 竞争条件