libGdx动画框架:把一个子弹作为一个actor,用MoveToAction动作,从下往上反复执行

一.前言:自己找了一些文章,还在学习libGdx,利用libGdx实现子弹效果,遇到的一个头疼的问题,若有好的解决办法,欢迎留言交流,互相学习:

问题:实现子弹效果,两种思路

一是不断的创建子弹,追后actor虽然不能销毁,但是可以隐藏,但在我没有找到回收的方法,意味着内存会疯狂增加,最后崩溃;

二是创建子弹,反复使用,不够则新建一个,这样可以避免反反复复创建子弹和给子弹创建动作,但是框架提供的方法getActions获取到的是父类action,不能设置动作目标位置;

这是java,他的MoveToAction实例创建之后是引用数据类型,所以就有了这个思路:在自己的演员actor类中定义一个参数MoveToAction,在addAction的时候将该action绑定到这个参数,这样只要取到这个actor就可以随意的修改action的目标位置了

这时屏幕上的子弹就实现了创建指定数量的实例,并重复利用

但这时又有一个问题,子弹actor运行事件稍长,就会逐渐同步,重叠到一起去,与我们想要的同间距发射效果想去甚远,这时,创建一个定时器,扫描子弹清单,去决定创建子弹还是重写发送子弹:

子弹到达目标地点时:

actor1.getMoveToAction().finish():停用这个动作,减少资源消耗

子弹需要重新启用时:

actor.getMoveToAction().restart():启用此子弹的动作

完美解决在actor创建之后,重复利用并任意修改起始和结束位置,同时保证子弹发射时间间隔相同的问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值