【发布时间】:2014-12-30 16:53:43
【问题描述】:
我尝试使用 SKAction 使节点移动,但每当我添加节点并移动它时,它就会像疯了一样沿着 y 轴上下抖动!
有什么想法吗?
我尝试过使用 MoveToY、MoveTo 等。但不知道是什么导致了抖动。
谢谢..
-(void)addEnemy{
enemy = [SKSpriteNode spriteNodeWithImageNamed:@"enemy"];
enemy.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake(40, 40)];
enemy.physicsBody.dynamic = YES;
enemy.physicsBody.usesPreciseCollisionDetection = YES;
enemy.physicsBody.categoryBitMask = enemyHitCatagory;
enemy.physicsBody.contactTestBitMask = bulletHitCatagory;
enemy.physicsBody.collisionBitMask = bulletHitCatagory;
enemy.position = CGPointMake(random() % 300, CGRectGetMaxY(self.frame));
enemy.size = CGSizeMake(40, 40);
enemy.zPosition = 5;
SKAction *attack = [SKAction moveTo:(CGPointMake(20, 300)) duration:(3)];
[enemy runAction:[SKAction repeatAction:attack count:1]];
[self addChild:enemy];
}
【问题讨论】:
-
如果我让enemy.physicsBody.dynamic = NO 那么它不会抖动但我没有碰撞检测...
-
你试过加
enemy.physicsBody.restitution = 0吗?并为它击中的任何物理体设置相同的值?在我看来,你的敌人只是从一个物理身体上弹回来。默认情况下,物理体的恢复值为 0.2。 -
太棒了!这似乎已经解决了!谢谢!! @pasta12
-
太棒了!我会把它作为你接受的答案:)
-
动态身体 + 移动动作 = 不是一个好主意。如果您希望节点表现得像物理对象,请考虑物理应该控制节点的位置和旋转属性。尽管建议的解决方法适用于这种特殊情况,但您今后可能会遇到更多问题。
标签: ios objective-c sprite-kit