我正在尝试使用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]
我使用它来将鳍状肢向上或向下围绕其边缘的枢轴进行切换,正如普通弹球机的鳍状肢所预期的那样。这有两个问题。首先,鳍状肢的物理实际上并没有被移动以与鳍状肢的新锚相匹配,因此物理体不在与鳍状肢相同的位置。其次,当一个动作旋转时,球的位置会受到影响,但不会影响它的速度,因此用鳍状肢撞击球并不会向上射击。有没有更好的方法来实现这一目标?
答案 0 :(得分:3)
根据您发布的一小部分代码,我建议如下:
如果您还没有,请在项目的View Controller viewDidLoad中添加skView.showsPhysics = YES;
。这将允许您查看对象的物理实体。
如果您的鳍状肢的物理主体不正确,请使用CGMutablePathRef
创建自定义物理主体,或者您可以使用此utility。
确保您的鳍状肢和球正确设置了碰撞。
将球和鳍状肢的物理身体恢复属性设置为更高级别。当两个物体发生碰撞时,这将产生更多的反弹。