无法为CC3MeshNode分配BoundingVolume

时间:2013-07-12 07:10:35

标签: ios bounding-box cocos3d

我想在 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

1 个答案:

答案 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。