SpriteKit Pinball Flipper 行为

Posted

技术标签:

【中文标题】SpriteKit Pinball Flipper 行为【英文标题】:SpriteKit Pinball Flipper Behavior 【发布时间】:2014-04-09 20:38:15 【问题描述】:

我正在尝试使用 spritekit 构建弹球游戏。球受重力影响并且反应正常,但我无法找到移动脚蹼的方法,以便它们影响球的物理特性。现在我正在使用这样的 SKAction 围绕锚点旋转鳍状肢

//set anchor point to left edge for rotation
theLeftFlipper.anchorPoint = CGPointMake(0,0.5);

//rotate (done in touchesBegan)
SKAction *rotateLeft = [SKAction rotateByAngle: -1.5f duration:0.1];
[leftFlipper runAction:rotateLeft]

我使用它来围绕其边缘的枢轴向上或向下切换脚蹼,正如普通弹球机的脚蹼所预期的那样。这有两个问题。首先,鳍状肢的physicsBody 并未实际移动以匹配鳍状体的新锚点,因此物理体与渲染的鳍状肢不在同一位置。其次,当以动作旋转时,球的位置会受到影响,但速度不会受到影响,因此用脚蹼击球不会向上射球。有没有更好的方法来实现这一点?

【问题讨论】:

【参考方案1】:

根据您发布的一小段代码,我建议如下:

    如果还没有,请在项目的 View Controller viewDidLoad 中添加 skView.showsPhysics = YES;。这将允许您查看对象的物理实体。

    如果您的脚蹼的物理体不正确,请使用CGMutablePathRef 创建自定义物理体,或者您可以使用此utility。

    确保您的脚蹼和球的碰撞设置正确。

    将球和脚蹼的物理体恢复属性设置为更高级别。这将在两个物体碰撞时产生更多的反弹。

【讨论】:

将鳍状肢的复原力设置为 1.5 并使用 CGPathCreatWithRect(CGRectMake(), nil) 来创建新的物理体以补偿新的锚点 太好了。编码愉快! @ejfrancis 感谢您的提示,但是这一次即使用户没有点击脚蹼,球也会反弹。你找到解决方案了吗? (我也在做弹球:-))

以上是关于SpriteKit Pinball Flipper 行为的主要内容,如果未能解决你的问题,请参考以下文章

2018多校第6场 1013 hdu6373 Pinball

互评Alpha版本——杨老师粉丝群——Pinball

Flipper:Flipper Hermes 调试器不显示

51Nod 欢乐手速场1 A Pinball[DP 线段树]

无法为组启用 Flipper 功能

Flipper Lexical o Preprocessor 问题 Flipper react-native ios 构建失败