我想在 cocos3d 中使用 boundingvolume 创建 CC3MeshNode 。我用pod文件创建了 CC3MeshNode 。我想收到碰撞通知。
-(void) initializeScene
{
[self addContentFromPODFile: @"hello-world.pod" withName:@"pod1"];
CC3MeshNode *object1 = (CC3MeshNode*)[self getNodeNamed: @"pod1"];
CC3MeshNod *object2=[[object1 copyWithName:@"pod1"]autorelease];
[object1 populateAsSolidBox:CC3BoundingBoxMake(9.5, 5.0, 4.0, 0.0, 0.0, 0.0)]; object1.location=cc3v(-5.0, 0.0, 0.0); object2.location=cc3v(5.0, 0.0, 0.0);
[self addChild:object2];
CCActionInterval *move1=[CC3MoveTo actionWithDuration:3.0 moveTo:cc3v(-1.0, 0.0, 0.0)]; CCActionInterval *move2=[CC3MoveTo actionWithDuration:3.0 moveTo:cc3v(1.0, 0.0, 0.0)]; [object1 runAction:move1];
[object2 runAction:move2];
}
-(void) updateAfterTransform: (CC3NodeUpdatingVisitor*) visitor
{
if([object1 doesIntersectNode:object2])
NSLog(@"Collision !!!!!!!!!!!!!!!!!!!!!!");
}
我尝试分配 boundingvolume ,但没有用。实际上我很难为 cc3MeshNode
实现boundingvolume答案 0 :(得分:2)
您上面的评论说:
我在
中收到错误消息[object1 populateAsSolidBox:CC3BoundingBoxMake(9.5, 5.0, 4.0, 0.0, 0.0, 0.0)];
这就是您遇到错误的原因。从CC3Foundation documentation来看,您在调用
中将CC3BoundingboxMake中的最大值设置为低于分钟的值(它们都为零)CC3BoundingBoxMake(9.5, 5.0, 4.0, 0.0, 0.0, 0.0)];
也就是说,从上面的链接来看,CC3BoundingBoxMake()的签名是
CC3BoundingBoxMake ( GLfloat minX,
GLfloat minY,
GLfloat minZ,
GLfloat maxX,
GLfloat maxY,
GLfloat maxZ
)
您的minX
为9.5且maxX
为0.0,minY
为5.0且maxY
为0.0,minZ
为4.0且您的maxZ
是0.0。