|
场景当中有一个自由落体的球,这个球是挂在一个MatrixTransform节点下的,MatrixTransform节点有一个回调函数,回调函数中会判断它与地面是不是交了,交的时候我希望把这个矩阵节点和球的节点都删掉……
请问有什么好的做法吗?刚刚接触OSG不久,可能问的这个问题比较蠢…………谢谢~
目前的代码大概是这样的:
- virtual void operator()(osg::Node* node ,osg::NodeVisitor* nv)
- {
- using namespace osg;
- MatrixTransform* matrix_node = dynamic_cast<MatrixTransform*>(node);
- Matrix matrix = matrix_node->getMatrix();
- velocity += Vec3(0, 0, -0.002);
- matrix.postMultTranslate(velocity);
- matrix_node->setMatrix(matrix);
- Vec3 now_position = start_position * matrix;
- osgUtil::IntersectVisitor ivXY;
- //根据新的位置得到两条线段检测
- osg::ref_ptr<osg::LineSegment> lineXY = new osg::LineSegment(now_position, now_position+velocity);
- ivXY.addLineSegment(lineXY);
- //结构交集检测
- GAME.main_camera->m_pHostViewer->getSceneData()->accept(ivXY) ;
- if(ivXY.hits())
- {
- //想在这里把这个节点删了;
- }
- return;
- }
复制代码 |
|