查看: 1992|回复: 8

用粒子系统模拟坦克打炮的效果的问题

[复制链接]

该用户从未签到

发表于 2011-5-2 23:05:47 | 显示全部楼层 |阅读模式
本帖最后由 zlulu2006 于 2011-5-2 23:06 编辑

最近一直在做osg的开发和学习,其中要有一个效果是坦克开火时,能有一个火光从坦克炮口冒出,这里已经实现冒火,但是,火光是连续冒出的,即使设置了粒子的生存周期很短(0.1s),粒子还是会不断出现,请问如何才能让坦克发出一束火光之后就不再发出呢,就是说,如何才能使粒子只产生一次。
p_large_13rt_32e9000003845c41.jpg

该用户从未签到

发表于 2011-5-3 09:33:16 | 显示全部楼层
  1. emitter->setEndless(false);
  2. emitter->setLifeTime(...);
复制代码

该用户从未签到

 楼主| 发表于 2011-5-3 11:02:40 | 显示全部楼层
回复 2# array


    嗯,用上面的方法解决了,谢谢啊,看来我对这些类的继承关系还不是很熟悉

该用户从未签到

 楼主| 发表于 2011-5-4 19:43:23 | 显示全部楼层
回复 2# array


    现在又遇到一个问题,粒子显示一次之后,就不显示了,不管用什么方法都没有成功,不知道是不是函数调用错了……
如何才能让粒子模拟的打炮效果再次产生呢,比如说按键按下一次,就触发一次粒子产生,如何实现呢?

该用户从未签到

发表于 2011-5-5 08:32:56 | 显示全部楼层
可以考虑设置Emitter的setCurrentTime()

该用户从未签到

 楼主| 发表于 2011-5-7 17:04:07 | 显示全部楼层
本帖最后由 zlulu2006 于 2011-5-7 17:07 编辑

回复 5# array


    嗯,我是这样解决的
        if (ea.getKey() == 0x71) //键盘上的Q键
                                {
                                        emitter1->setCurrentTime(0);
                                        return true;
              
                                }


我又发现一个新的问题,OSG中的键盘码值映射好像不是标准的键盘码值,比如说A在OSG中是0X61,但是标准的ASCII码是0X41
GUIEventAdapter这个文件中也没有给出定义。

该用户从未签到

发表于 2011-5-9 08:32:21 | 显示全部楼层
你好,我也是做火力打击的,请问你能把火炮开火这一块程序代码上传吗?我做的这一块没你的好,想参考一下。你可以直接传我邮箱 sky13934530478@sina.com
我是初学者,帮帮忙,万分感谢!!

该用户从未签到

发表于 2011-5-9 09:45:39 | 显示全部楼层
A的定义就是'A',这样对于开发是比较直观方便的

该用户从未签到

发表于 2013-4-25 23:18:10 | 显示全部楼层
弹道轨迹能不能模拟呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表