【问题标题】:Can't disable physics in Sprite Kit无法在 Sprite Kit 中禁用物理
【发布时间】:2015-11-13 12:09:29
【问题描述】:

我有两个节点彼此靠近。当我点击时,我希望一个节点位于另一个节点之上。我是这样做的:

SKAction *moveUp=   [SKAction moveByX:0 y:25 duration:0.1];
SKAction *moveDown= [SKAction moveByX:0 y:-25 duration:0.1];
SKAction *playerSequence = [SKAction sequence:@[moveUp,moveDown]];
[self.player runAction:[SKAction repeatAction:playerSequence count:1] withKey:@"attack"];

相反,我得到一个节点推动另一个节点(通过编辑器创建的机器人节点并且两种主体类型都设置为无)。

我尝试在两个节点上将这些添加到didMoveToView

node.physicsBody.dynamic = NO;
node.physicsBody.collisionBitMask = 0;
node.physicsBody.contactTestBitMask = 0;
node.physicsBody.affectedByGravity = NO;

我什至尝试在Update 上将速度设置为 0。还是没有效果。

【问题讨论】:

  • 你试过 node.physicsBody = nil 吗?
  • 除非您显示创建这些节点的代码,否则无法判断。
  • 我通过 xcodes 编辑器通过拖放创建节点。 (.sks 文件)
  • *cough* 使用 swift *cough*,啊,什么?

标签: ios objective-c sprite-kit skphysicsbody


【解决方案1】:

设置你的位掩码 -(void)didBeginContact:(SKPhysicsContact *)contact 作为shown in this post

我认为如果您将位掩码设置为 didMoveToView 因为一次只会运行其中一个,并且两个物理体需要相互同意不相互接触。

【讨论】:

    【解决方案2】:

    你必须将物理体设置为 nil:

    node.physicsBody = nil;
    

    【讨论】:

      猜你喜欢
      • 2013-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-24
      • 2016-04-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多