我正在制作一个2D游戏,其中一个角色站在屏幕左侧不动,物体从右侧向他飞来。他需要能够将这些飞行的敌人拍打下来。我有一个包含“拍打”动画帧的精灵动画。在拍打过程中,他的身体会稍微移动,他的手臂从靠在地上旋转到完全伸展在头顶上,然后拍打到地面上。这就是它的样子:SumoSmash Animation GIF
为此,我有一个名为
以下是创建手臂的方法:
SumoWarrior
的类,它是SKSpriteNode
子类。SumoWarrior精灵节点有一个名为warriorArm
的子精灵节点。我的想法是让主要的相扑武士精灵节点显示动画,并仅将此warriorArm
精灵节点用于形状为武士手臂的物理体的目的。我需要以某种方式旋转这个手臂体以跟随精灵动画,以检测与飞行物体的碰撞。以下是创建手臂的方法:
sumoWarrior.warriorArm = [SKSpriteNode spriteNodeWithTexture:[SKTexture textureWithImageNamed:@"warriorArm"]];
sumoWarrior.warriorArm.position = CGPointMake(15, 25);
sumoWarrior.warriorArm.anchorPoint = CGPointMake(0.16, 0.7);
sumoWarrior.warriorArm.texture = nil;
sumoWarrior.warriorArm.physicsBody = [SKPhysicsBody bodyWithPolygonFromPath:[sumoWarrior createArmBody]];
sumoWarrior.warriorArm.physicsBody.mass = 9999;
sumoWarrior.warriorArm.physicsBody.categoryBitMask = CollisionPlayer;
sumoWarrior.warriorArm.physicsBody.collisionBitMask = CollisionEnemy;
sumoWarrior.warriorArm.physicsBody.contactTestBitMask = CollisionEnemy | CollisionAlly;
sumoWarrior.warriorArm.physicsBody.allowsRotation = YES;
sumoWarrior.warriorArm.physicsBody.dynamic = YES;
有没有可能通过旋转和扩展这只手臂的方式,使其能够精确地跟随动画?是否还可以更改战士的主要物理身体(仅为身体周围的多边形,不包括手臂),以便它也能跟随动画?或者我完全错过了应该采取的方法?