gpt4 book ai didi

ios - 在 spritekit 中反复跳跃时停止弹跳

转载 作者:搜寻专家 更新时间:2023-11-01 07:18:26 26 4
gpt4 key购买 nike

我有一个玩家角色和一个地砖。在两个物理体上,我都将 restitution 设置为 0。

为了跳跃,我直接设置了播放器的velocity.dy。当玩家由于重力回到地面时,在大多数情况下它会起作用,或者看起来会起作用。

当我反复跳跃时出现问题。如果我在玩家着陆时向右跳,就会出现一些弹跳,并且玩家在下一次弹跳时达到的高度并不总是与初始弹跳相匹配。

当用户着陆时,我尝试了多种方法强制 velocity.dy 为 0,但没有任何方法可以解决奇怪的跳跃问题。我怎样才能正确顺利地进行一致的物理跳跃?

gif of issue

最佳答案

老实说,我不确定您要完成什么。通常我们不应该混淆物体的速度。在典型的 Spritekit 游戏中,我们必须将其视为“真实世界”情况,并通常对对象施加力或冲量。

我怀疑您正在尝试制作类似马里奥的游戏。您所要做的就是对物理世界施加足够大的引力,并对 Sprite 施加冲动以使其跳跃(在 touchesBegan 委托(delegate)上)。

刚才我继续在 Spritekit 中制作了一个简单的马里奥跳跃场景。这就是我通过为马里奥 Sprite 设置 y 分量的重力 -30 和脉冲 y = 100 最终得到的结果。 (帧速率很差。在模拟器/设备上看起来更好)

enter image description here

物理世界设置:

[self.physicsWorld setGravity:CGVectorMake(0, -30)];
self.physicsWorld.contactDelegate = self;

马里奥和平台 Sprite 设置代码:

SKSpriteNode *platform = [SKSpriteNode spriteNodeWithImageNamed:@"platform"];
platform.position = CGPointMake(view.frame.size.width/2.0,0);
platform.name = @"platform";
platform.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:platform.frame.size];
platform.physicsBody.categoryBitMask = platformCategory;
platform.physicsBody.dynamic = NO;
platform.physicsBody.usesPreciseCollisionDetection = YES;
platform.physicsBody.affectedByGravity = NO;
[self addChild:platform];

SKSpriteNode *mario = [SKSpriteNode spriteNodeWithImageNamed:@"mario"];
mario.position = CGPointMake(view.frame.size.width/2.0, 400);
mario.name = @"mario";
mario.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:mario.frame.size];
mario.physicsBody.categoryBitMask = marioCategory;
mario.physicsBody.dynamic = YES;
mario.physicsBody.usesPreciseCollisionDetection = YES;
mario.physicsBody.contactTestBitMask = platformCategory;
mario.physicsBody.affectedByGravity = YES;
[self addChild:mario];

触摸开始:

SKSpriteNode *mario = (SKSpriteNode*)[self childNodeWithName:@"mario"];
[mario.physicsBody applyImpulse:CGVectorMake(0, 100)];

关于ios - 在 spritekit 中反复跳跃时停止弹跳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40519354/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com