今天来给大家带来一个更劲爆的知识点——Flutter开发游戏。是的,没错,Flutter也能够用来开发游戏了。有人会问不懂Unity或者Cocos2d也能用Flutter开发游戏吗???是的,你没看错,Flutter就是这么666。
我在pub.dev上面找到了一些有关游戏的第三方开源库,使用它们你就能够轻而易举的实现你的游戏梦(你要说开发王者光荣、吃鸡那种大型游戏的话就当我前面的话没说)。下面开始今天的干货分享。文章源自微观生活(93wg.com)微观生活-https://93wg.com/4916.html
首先在pubspec.yaml 里面添加依赖包,如下所示:文章源自微观生活(93wg.com)微观生活-https://93wg.com/4916.html
dependencies: flame: ^0.17.2 接下来看看 main.dart 里面的代码,如下所示:文章源自微观生活(93wg.com)微观生活-https://93wg.com/4916.html
1 import &39;; 首先解释一下每一个包的作用:文章源自微观生活(93wg.com)微观生活-https://93wg.com/4916.html
// MD组件 // 咱们需要Flame构建游戏 // setupFlame 办法中需要用到 // 异步支撑 // 具体的游戏界面 main函数用了一个async表示异步,由于这触及到里面的“setupFlame”函数。setupFlame函数是一个异步的,它里面主要是构建Flame所需要的属性设置,咱们在启动游戏前要先设置flame的相关属性。文章源自微观生活(93wg.com)微观生活-https://93wg.com/4916.html
setupFlame 函数里面做了3件事:
● 创立 Util对象
● 设置全屏
● 固定为纵向位置,不允许旋转
接下来看看 game.dart 里面的代码,如下所示:
1 import &39;; 解释一下上面的代码的意思:
FlutterGame类是具体游戏功能的实现,继承了Flame提供的Game类,所以可以放心斗胆的写咱们自己的功能,比如游戏循环或者调剂大小事件等。Box2D将负责咱们所有与物理相关的操作,这包含处理碰撞,加速/减速物体/质量和摹拟咱们游戏中的不同形状/材料。
World是主要物理对象。
gravity 设置向量为0 表示无重力,Vector2你可以把它看作是平面二维坐标系统内的一个点,每一个Vector2都有一个X以及一个Y值。咱们的gravity向量坐标值为手机坐标系统左上角为,上部水平向右x轴正方向,左边垂直向下位y轴正方向重力设置位表示元素从屏幕顶部掉落到底部。
Box2D 需要用到 这两个常量值,这里面定义了两个,分别是:WORLD_POOL_SIZE以及WORLD_POOL_CONTAINER_SIZE。
然后使用World.withPool创立World对象。
接下来调用initialize办法,初始化咱们所有需要的东西,包含:需要调剂大小以及不需要调剂大小的东西。然后它的返回值调用Flame的初始化的办法,一旦Flutter筹备就绪,当即调用resize办法检查显示尺寸。
接下来看看几个函数的说明:
● render:在画布上绘制元素。
● update: 目标是60fps的速度进行,这象征着在一秒内将调用该函数60次。因为其实不一直是60fps的速度,time参数会告知你自上次调用以来经由了多少时间。
如果你依照以上步骤都都设置
以上就是微观生活(93wg.com)关于“Flutter开发游戏初体验,喜大普奔”的详细内容,希望对大家有所帮助!
添加依赖包
flutter:
sdk: flutter文章源自微观生活(93wg.com)微观生活-https://93wg.com/4916.html
box2d_flame: ^0.4.4
sensors: ^0.4.1+1
在main.dart中添加相关设置要素
2 import &39;;
3 import &39;;
4 import &39;;
5 import &39;;
6
7 void main async {
8 // 启动游戏前要先设置flame的相关属性
9 await setupFlame;
10 var game = new FlutterGame;
11 runApp;
12 }
13
14 /// 构建Flame所需要的属性设置
15 Future setupFlame async {
16 // 创立 Util对象
17 var flameUtil = Util;
18 // 设置全屏
19 await flameUtil.fullScreen;
20 // 固定为纵向位置,不允许旋转
21 await flameUtil.setOrientation;
22}
import &39;;文章源自微观生活(93wg.com)微观生活-https://93wg.com/4916.html
import &39;;文章源自微观生活(93wg.com)微观生活-https://93wg.com/4916.html
import &39;;文章源自微观生活(93wg.com)微观生活-https://93wg.com/4916.html
import &39;;文章源自微观生活(93wg.com)微观生活-https://93wg.com/4916.html
import &39;;
游戏部份的代码
2
3 import &39;;
4 import &39;;
5 import &39;;
6
7 class FlutterGame extends Game {
8 static const int WORLD_POOL_SIZE = 100;
9 static const int WORLD_POOL_CONTAINER_SIZE = 10;
10
11 World world;
12
13 final Vector2 _gravity = Vector2.zero;
14
15 FlutterGame {
16 world = new World.withPool,
19 );
20 initialize;
21 }
22
23 Future initialize async {
24 resize);
25 }
26
27 void resize {
28 super.resize;
29 }
30
31 @override
32 void render {
33 }
34
35 @override
36 void update {
37 }
38 }
开启引擎,绘制元素
Flutter开发游戏初体验,喜大普奔
继续阅读
评论