|
本帖最后由 back 于 2009-9-3 10:38 编辑
void Tabletop::touchJudge(void)
{
if(touchFlag) //touchFlag为开启碰撞标志
{
if(k_flag!=k)
{
osgUtil::IntersectVisitor iv;
osg::Vec3 a,b;
a=osg::Vec3(0,-10,-5);
b=osg::Vec3(0,10,-5);
osg::ref_ptr<osg::LineSegment> line = new osg::LineSegment(knife_pos + a,knife_pos + b); // 创建判断线条
iv.addLineSegment(line.get()); // 把线条加入iv中
this->accept(iv); // 把iv加到被碰撞的模型中
if (iv.hits()) // 如果有线条与被碰模型碰到则为true
{
touch=true;
// osg::Vec3 ip = hitlist1.front().getWorldIntersectPoint();
}
else
touch=false;
}
}
}
关于内存分配,指针调用,堆栈等问题,没学好,不知道这里的问题是什么问题,谢谢~ |
|