繁体   English   中英

iOS-SpriteKit:ApplyImpulse在SKSpriteNode上不起作用

[英]iOS - SpriteKit : ApplyImpulse not working on SKSpriteNode

我对SpriteKit有点陌生,我在物理上遇到了一些麻烦,我尝试了很多方法使SKSpriteNode受到力或冲动移动,但它永远不会动,当我设置时,只有重力会影响它。

-(id)initWithSize:(CGSize)size {
    if (self = [super initWithSize:size]) {

        self.anchorPoint = CGPointMake(0.5, 0.5);
        myWorld = [SKNode node];
        [self addChild:myWorld];

        SKSpriteNode* map = [SKSpriteNode spriteNodeWithImageNamed:@"grass"];
        [myWorld addChild:map];

        self.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:map.frame];
        self.physicsBody.friction = 0.0f;
        self.physicsBody.categoryBitMask = 2;
        self.physicsWorld.gravity = CGVectorMake(0.0, 0.0);
        self.physicsWorld.contactDelegate = self;

        pointOfView = [SKSpriteNode spriteNodeWithColor:[UIColor colorWithWhite:1 alpha:0.2] size:CGSizeMake(300, 548)];
        [myWorld addChild:pointOfView];

        pointOfView.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:pointOfView.frame.size];
        pointOfView.physicsBody.friction = 0.0f;
        pointOfView.physicsBody.restitution = 1.0f;
        pointOfView.physicsBody.linearDamping = 0.0f;
        pointOfView.physicsBody.allowsRotation = NO;
        pointOfView.physicsBody.collisionBitMask = 2;
        pointOfView.physicsBody.categoryBitMask = 3;
        [pointOfView.physicsBody applyImpulse:CGVectorMake(10.0f, -10.0f)];
    }
    return self;
}

这是我主要场景中的大多数代码,除了诸如update或touchesBegan之类的空方法外,没有别的。 我已经尝试了很多东西,我开始失去它了哈哈

非常感谢您的帮助!

有点晚了,但是答案就在这里: 无法将脉冲应用于SKSpriteNode物理主体

问题是您已经使用bodyWithEdgeLoopF​​romRect创建了一个物理物体。 这将创建一个不会对applyImpulse做出响应的静态物理实体。 您需要使用bodyWithRectangleOfSize:添加物理物体。

pointOfView.physicsBody.dynamic = YES;

动态属性决定了精灵是否应该受到物理力的影响。

您编写了错误的代码,pointOfView不受重力影响,您只是在上面施加了一个小障碍。

将此行self.physicsWorld.gravity = CGVectorMake(0.0,0.0)更改为self.physicsWorld.gravity = CGVectorMake(0.0,-9.8); 如果您正在寻找向上的负重力,而CGVectorMake(0.0,9.8)如果您正在寻找向下的正重力。 并尝试在间隔后施加脉冲[pointOfView.physicsBody applyImpulse:CGVectorMake(10.0f,-10.0f)];

暂无
暂无

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

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