我想在cocos3d中创建一个CC3MeshNode和boundingvolume。我已经用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 !!!!!!!!!!!!!!!!!!!!!!");
}
我尝试分配绑定音量,但没有成功。事实上,我在为cc3MeshNode
您上面的评论说:
我在
[object1 populateAsSolidBox:CC3BoundingBoxMake(9.5, 5.0, 4.0, 0.0, 0.0, 0.0)];
中出错
以下是您出现错误的原因。从CC3Foundation文档来看,在调用时,您似乎正在将CC3boundboxMake中的最大值设置为低于分钟的值(它们都为零)
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。