GDX-RPG icon indicating copy to clipboard operation
GDX-RPG copied to clipboard

需求:相机摇晃

Open dingjibang opened this issue 9 years ago • 2 comments

需求要求完成时间: image

需求简述: 在脚本添加一个命令,来让画面变得像是地震了一样的晃动

script命令 shaking (int time, int strong, ShakeType type) time 摇晃帧数,如果为 -1 则无限 strong 摇晃强度,0最小,最大随便233 type 见附录

tip: com.rpsg.rpg.system.controller.MoveController 下面的代码是管相机的,里面有两个actor(buffer和offset),buffer是管“平滑移动”的,offset是“移动相机”的,他俩是不冲突的,也就是你移动相机时候顺便行走也不会有问题image,也就是说现在要再来个actor来做这个摇晃效果,三个actor代码变得略鹅心了23333

附: ShakeType : enum { leftRight,//左右摇晃 topBottom,//上下摇晃 random,//瞎激霸摇 }

@Lchaos @HUIZHANGSAMA

dingjibang avatar Jan 15 '16 09:01 dingjibang

最后是怎么实现的? 大神,贴段代码学习一下。

ttwings avatar Oct 04 '17 16:10 ttwings

@ttwings 最后没有(人)实现呢,这只是个简单的课题一样的需求,实现还是很好实现的,用打字介绍下吧

假设相机的坐标一直对着玩家,对着屏幕中心。这时玩家走路就会产生玩家不动,地图在卷动的效果,也就是典型的RPG效果,假设这里已经实现了。

我们把这个相机的当前坐标设为x, y,在GDX-RPG里,用了一个投机取巧的办法来实现了画面晃动,就是创建一个空白的Actor,当我们给这个Actor创建一个Action,比如 actor.addAction(Actions.forever(Actions.sequence(Actions.moveTo(-100, 0, 1), Actions.moveTo(100, 0, 1)))

上边的actions就是创建一个无限循环,让这个actor每隔1秒左右移动。

最后,我们在渲染函数里,将相机的坐标设置为 (x + actor.getX(), y),就可以让相机来产生晃动效果了。

dingjibang avatar Oct 09 '17 08:10 dingjibang