繁体   English   中英

SKAction scaleXTo:-1

[英]SKAction scaleXTo:-1

我正在尝试使用SKAction *mirrorDirection = [SKAction scaleXTo:-1 y:1 duration:0.0];来镜像我的SKSpriteNode SKAction *mirrorDirection = [SKAction scaleXTo:-1 y:1 duration:0.0]; 但是每次我这样做时,子画面的物理物体似乎都被弄乱了,并从屏幕上掉了下来。 我在精灵下面有几个对象(地板),它掉落在所有对象之间,好像它们不在那里一样。

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

更新:不幸的是,建议将物理物体重置为一个答案不能解决问题。 看来只有物理物体的接触部分会发生故障。 小家伙像石头一样掉落,重力仍然有作用。

我也尝试过再次通过self.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake(self.size.width, self.size.height)];进行重置self.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake(self.size.width, self.size.height)];

self.xScale = -1; 但这也不能解决问题。

将可镜像节点添加为某些常规SKNode的子节点,然后在此父节点(而不是负缩放节点)上设置物理主体。

我不知道如何解决此问题,但我想提出一种创建镜像子画面的方法。

为了达到这个目的,请将您的精灵节点的x或y比例设置为-1。 然后使用SKView方法textureFromNode:从此镜像节点创建纹理。

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

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

self.yourSprite.xScale = -1;

Roecrew关于直接设置xScale属性是正确的。 我建议您尝试一下:

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

每次更改xScale属性时,您将需要“重置” PhysicsBody。

PhysicsBody的xScale问题是SpriteKit中的一个错误,但是我能够使用第二行“保留” PhysicsBody。

我正像您一样遇到问题。 我花了大约2个小时才弄清楚。

在scaleX之后只是初始化您的PhysicsBody,我不知道为什么,但是我已经通过这种方式纠正了这个问题。

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;
}

记住,之前请重新分配所有类别以及所有类似init的内容。

我希望spritekit的专业人士可以告诉我为什么....

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM