SKAction scaleXTo:-1(SKAction scaleXTo:-1)

2019-10-19 17:10发布

我想反映使用我SKSpriteNode SKAction *mirrorDirection = [SKAction scaleXTo:-1 y:1 duration:0.0]; 但我每次做的时候,精灵的物理身体似乎变得一团糟并将其放到了屏幕。 我有多个对象(地板)精灵之下,它属于通过所有的人,如果他们是不存在。

这只有当我镜像精灵发生。 有人知道怎么修这个东西吗?

更新:正在重置物理身体作为一个答案建议可惜没能解决问题。 看来,只有身体的物理故障的接触部分。 随着小家伙下降像一块岩石重力仍然有效果。

我还试图复位通过再次self.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake(self.size.width, self.size.height)];

后右self.xScale = -1; 但这也并没有解决问题。

Answer 1:

添加您的镜面能节点作为一些正规SKNode的孩子,并设置物理身体这个父节点,而不是负缩放的节点上。



Answer 2:

我不知道如何解决,但我想建议你可以创建一个镜像精灵的一种方式。

为了实现这一目标设置你的精灵节点的x或y规模为-1。 然后使用SKView方法textureFromNode:这个镜像节点创建纹理。

然后,您可以使用此纹理创建一个镜像,但不需要任何负面缩放一个新的精灵节点。



Answer 3:

不要使用SKAction,只需直接将其设置为SKSpriteNode的XScale属性。

self.yourSprite.xScale = -1;


Answer 4:

Roecrew is right about setting the xScale property directly. I would suggest you try this:

node.xScale = -1;
node.physicsBody = node.physicsBody;

You will need to 'reset' the physicsBody each time you change the xScale property.

The xScale issue with physicsBody is a bug in SpriteKit, but I was able to 'retain' the physicsBody using the second line.



Answer 5:

我正好符合这个问题像你。 我花了大约2个小时的数字出来。

只要你的初始化后physicsBody你的scaleX,我不知道为什么,但我做这样了解决此问题。

walkRight   = [SKAction sequence:@[resetDirection,[SKAction runBlock:^{
            [self changePhysicsDirectionRight];
        }],[SKAction repeatActionForever: walk]]];
walkLeft   = [SKAction sequence:@[mirrorDirection,[SKAction runBlock:^{
            [self changePhysicsDirectionLeft];
        }],[SKAction repeatActionForever: walk]]];

walkRight和walkLeft是我的动作改变方向时,及resetDirection和mirrorDirection正是我用于scaleXTo的操作:1和scaleXTo:1

我scaleXTo所以后,我用一个方法调用changePhysicsDirectionRight要重新初始化我physicBody像

- (void)changePhysicsDirectionRight{
    self.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake(self.size.width,self.size.height)];
    self.physicsBody.categoryBitMask = guyCategory;
    self.physicsBody.contactTestBitMask = 0;
    self.physicsBody.collisionBitMask   = 0;
}

记得好像你之前初始化重新分配所有的类别和一切。

我希望有人在spritekit亲可以告诉我为什么....



文章来源: SKAction scaleXTo:-1