3

我想在 cocos3d 中创建一个带有boundingvolumeCC3MeshNode。我创建了一个带有 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 时很困惑

4

1 回答 1

2

你上面的评论说:

我收到错误[object1 populateAsSolidBox:CC3BoundingBoxMake(9.5, 5.0, 4.0, 0.0, 0.0, 0.0)];

这就是你有错误的原因。从CC3Foundation 文档看来,您在调用中将 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。

于 2013-07-16T15:18:14.377 回答