【发布时间】:2025-11-26 20:45:01
【问题描述】:
我正在开发一款可以通过参考下图进行最佳描述的瓷砖地图游戏。 红色瓷砖是我的地板,它与我的玩家发生碰撞,它还处理精灵是否可以跳跃(如果没有接触就不要跳跃)。所以在走过红色瓷砖时我“可以跳跃” 但是,如果我遇到黄色瓷砖。我的 NSLog 再次打印“可以跳跃”,因为我对玩家和墙壁的接触时间很长。但是,如果我在仍然走在红色上的同时离开黄色瓷砖。我收到一条通知说“不能跳跃”,结果我的精灵不能再跳跃,因为它没有检测到我的玩家和我的地板之间的碰撞。
如果我能得到关于如何处理这个问题的想法,我会很高兴。 谢谢
floor.name = @"floor";
floor.position = CGPointMake(x + w/2, y + h/2);
floor.zPosition=0;
floor.physicsBody =
[SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake(w, h)];
floor.physicsBody.usesPreciseCollisionDetection=YES;
floor.physicsBody.categoryBitMask = floorCategory;
floor.physicsBody.contactTestBitMask=spriteCategory;
floor.physicsBody.dynamic = NO;
- (void)didBeginContact:(SKPhysicsContact *)contact {
uint32_t collision = (contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask);
if (collision == (floorCategory|spriteCategory)) {
NSLog(@"Can jummp");
onFloor=YES;
}
}
- (void) didEndContact:(SKPhysicsContact *)contact {
uint32_t contactTest = (contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask);
if (contactTest == (spriteCategory| floorCategory)) {
NSLog(@"dont jumps");
onFloor = NO;
}
【问题讨论】:
-
你有没有机会很快收到很多可以/不能跳转的消息?
-
@sangony 不,我不知道,当我跳时我得到“不能跳”,当我降落在平台上时,我得到“可以跳”。
-
所以如果你的人与黄色和红色接触然后失去与黄色的接触而仍然与红色接触,则显示“没有跳跃”?
-
@sangony 不,对不起,如果我解释错了。当我从显示“可以跳跃”的任何地方降落到红色时,如果我触摸黄色而仍然站在红色上,它会说“可以跳跃”,但如果我向右走并与黄色断开接触但仍处于红色状态。它说“不跳”。
-
黄色物体是什么类别?
标签: ios sprite-kit