【问题标题】:cocos2d v3 collision detectioncocos2d v3 碰撞检测
【发布时间】:2014-05-05 23:55:32
【问题描述】:

我正在尝试检查两个物体的碰撞碰撞,但碰撞检测回调没有被触发。 这是我的代码:

1) 我的 CCScene 实现了 CCPhysicsCollisionDelegate 协议

2) 我为物理设置碰撞委托

_physics = [CCPhysicsNode node];
_physics.gravity = PHYSICS_GRAVITY;
_physics.debugDraw = YES;
_physics.collisionDelegate = self;
[self addChild:_physics];

3) 我为两个身体中的每一个设置一个碰撞类型

body1.collisionType       = @"body1";
body2.collisionType       = @"body2";

4) 就是这样,当这两个物体发生碰撞时,不会调用任何 CCPhysicsCollisionDelegate 回调方法。

- (BOOL)ccPhysicsCollisionBegin:(CCPhysicsCollisionPair *)pair typeA:(CCNode *)nodeA     typeB:(CCNode *)nodeB
{
    NSLog(@"HELLO");
    return YES;
}

你能帮我解决这个问题吗?你在 cocos2d v3 中能接收到碰撞回调吗?

提前致谢

【问题讨论】:

  • 你能发布你的回调方法吗?
  • - (BOOL)ccPhysicsCollisionBegin:(CCPhysicsCollisionPair *)pair typeA:(CCNode *)nodeA typeB:(CCNode *)nodeB { NSLog(@"HELLO");返回是; }
  • 我已经尝试了新的cocos2d模板项目,所以我基本上设置了_physics.collisionDelegate = self;但无论如何都不会触发回调
  • 不确定,但碰撞类型是否意味着将可以碰撞的对象组合在一起?如果是这样,那么使用两种不同的类型意味着它们将无法碰撞
  • 对于相同的碰撞类型,它也不起作用。无论如何,身体正在碰撞,问题是回调没有被触发。真的很奇怪..

标签: cocos2d-iphone collision-detection collision


【解决方案1】:

在 cocos2d v3 物理中,collisionType 消除了设置整数位掩码来定义碰撞类型的需要。参数名CCPhysicsCollisionDelegatemethods必须是你自己要处理的collisionTypes。所以在你的情况下,碰撞回调方法应该是

- (BOOL)ccPhysicsCollisionBegin:(CCPhysicsCollisionPair *)pair body1:(CCNode *)nodeA     body2:(CCNode *)nodeB
{
    NSLog(@"HELLO");
    return YES;
}

在 cocos2d 中默认一切都会发生碰撞,但是如果你将两个物体的 collisionGroup 设置为相同,那么它们就不会发生碰撞。

【讨论】:

  • 非常感谢,它有效!另一个问题是:是否有可能让两个物体不相互碰撞,但能够在它们相交时得到回调?
  • 好的,我想通了。我只是从 ccPhysicsCollisionBegin 返回 NO
  • 是的,我遇到了同样的问题,而且vola..没有注意到我需要捕获回调方法的签名:|
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-14
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多