我有一个问题,我真的很感激帮助。我正在开发一个用平铺设计的小游戏。我的问题是这样的,比如说我有一个由16&16 images
制作的平铺地图平台。所以一个大约这个大小
| |
和它们中的5个将是一样的
| || || || || |。
现在,我有一个精灵穿过它,当我向左或向右移动时,我的联系人被垃圾邮件发送。请查看以下NSLog
的代码和复制粘贴。(NB请参阅时间)
- (void)didBeginContact:(SKPhysicsContact *)contact {
uint32_t collision = (contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask);
if (collision == (Floor|Player)) {
NSLog(@"Can jummp");
onGround=YES;
}
}
- (void) didEndContact:(SKPhysicsContact *)contact {
uint32_t contactTest = (contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask);
if (contactTest == (FLOOR| PLAYER)) {
// if (contactTest != (floor | player)) {
NSLog(@"dont jumps");
onGround = NO;
/*
SKPhysicsBody *other = (contact.bodyA.categoryBitMask == PCPlayerCategory ?
contact.bodyB : contact.bodyA);
if (other.categoryBitMask & _player.physicsBody.collisionBitMask) {
// 3
NSLog(@"dont jumps");
onGround=NO;
}
*/
}
}
NSLog:
2014-04-29 19:09:53.111 Explorer[4517:a0b] Can jummp
2014-04-29 19:09:53.142 Explorer[4517:a0b] dont jumps
2014-04-29 19:09:53.159 Explorer[4517:a0b] Can jummp
2014-04-29 19:09:53.192 Explorer[4517:a0b] dont jumps
2014-04-29 19:09:53.227 Explorer[4517:a0b] Can jummp
2014-04-29 19:09:53.260 Explorer[4517:a0b] dont jumps
2014-04-29 19:09:53.293 Explorer[4517:a0b] Can jummp
2014-04-29 19:09:53.327 Explorer[4517:a0b] dont jumps
2014-04-29 19:09:53.343 Explorer[4517:a0b] Can jummp
2014-04-29 19:09:53.377 Explorer[4517:a0b] dont jumps
2014-04-29 19:09:53.410 Explorer[4517:a0b] Can jummp
2014-04-29 19:09:53.460 Explorer[4517:a0b] dont jumps
2014-04-29 19:09:53.710 Explorer[4517:a0b] dont jumps
按住左箭头并向左移动我的角色时产生NSLog
。因为这个“onGround”被设置为“NO”,当它应该是“Yes”时,它会干扰我的角色的跳跃。无论如何,当我的播放器实际离开平台而不是16*16 image
时,我可以编辑我的结束联系人。
- 谢谢你
平铺定义
if([map propertiesForGid:tileGid][@"floor"]) {
//4
SKSpriteNode *tile = [layer tileAtCoord:coord];
tile.name=@"floor";
tile.physicsBody =
[SKPhysicsBody bodyWithRectangleOfSize:tile.size];
tile.physicsBody.categoryBitMask = FLOOR;
tile.physicsBody.collisionBitMask =
PLAYER;
tile.physicsBody.contactTestBitMask=PLAYER;
tile.physicsBody.dynamic = NO;
tile.physicsBody.friction = 0;
tile.physicsBody.restitution=0;
}
![在此处输入图片说明] [1]