无法对 SKSpriteNode 物理体施加脉冲
Posted
技术标签:
【中文标题】无法对 SKSpriteNode 物理体施加脉冲【英文标题】:Not able to apply impulse to SKSpriteNode physics body 【发布时间】:2014-01-16 13:50:55 【问题描述】:我是 xcode 的 sprite kit 的新手,我正在尝试对 SKSpriteNode's
物理体施加冲动。
以下是我创建场景的方式:
self.backgroundColor = [SKColor colorWithRed:0 green:0 blue:0 alpha:1.0];
self.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame];
self.physicsBody.friction = 0.0f;
self.physicsWorld.gravity = CGVectorMake(0.0f, 0.0f);
ballCategory = 1;
wallCategory = 2;
self.physicsBody.categoryBitMask = wallCategory;
以下是我创建播放器并赋予其冲动的方式:
player = [SKSpriteNode spriteNodeWithImageNamed:filePath];
player.size = CGSizeMake(100, 100);
player.position = CGPointMake(150, 250);
player.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:player.frame];
player.physicsBody.categoryBitMask = ballCategory;
player.physicsBody.collisionBitMask = wallCategory;
player.physicsBody.friction = 0.0f;
player.physicsBody.restitution = 1.0f;
player.physicsBody.linearDamping = 0.0f;
player.physicsBody.allowsRotation = NO;
[self addChild:player];
CGVector impulse = CGVectorMake(100,100);
[player.physicsBody applyImpulse:impulse];
由于我一直在完美地遵循 iOS 开发人员库 Sprite Kit 编程指南,我有什么明显的遗漏吗?提前感谢您的帮助!
【问题讨论】:
【参考方案1】:您正在将玩家的 PhysicsBody 创建为边缘体 - 这些始终是静态的(不会因力/脉冲而移动)。您应该将该行更改为:
player.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:player.frame.size];
这个例子使它成为一个基于矩形的动态体积,它会受到物理力的影响。您可以阅读物理体的类型here。
【讨论】:
以上是关于无法对 SKSpriteNode 物理体施加脉冲的主要内容,如果未能解决你的问题,请参考以下文章