|
本帖最后由 luyang0222 于 2010-9-29 14:44 编辑
打个比方,我想雪的效果通过按键来实现,即按了某个键,开始下雪了,再按一下就关掉了这种效果,另外通过“+”“-”来控制雪粒子的大小。
我是这样的思路:
=================================================
① 先写一个按键响应的类changesnow: public osgGA::GUIEventHandler
在这个类里定义几个成员变量 float m_snow,m_snowtemp;bool button;并设了初值。
然后设置了按键消息处理bool changesnow::handle( const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa )
实现每按下“R”或“r”,m_snow自减0.1f,每按下“T”或“t”,m_snow自增0.1f,每按下“k”或“K”,m_snow由当前值与0.0f来回切换。
② 在main()先申请一个粒子系统pe:
osgParticle::recipitationEffect* pe = new osgParticle::recipitationEffect();
然后实例化类changesnow aa;
再pe->snow(aa.m_snow);
而后再把pe加到组节点上 root->addChild(pe);
后来再来个viewer->addEventHandler( new changesnow());
=================================================
我以为这样的话,就可以通过按键盘改变m_snow的值,从而改变雪的效果。但是实际运行却是没有反应。请教各位高手帮我解答疑惑。 |
|