godot 像素平台游戏1 创建tile和character
视频位置
https://www.youtube.com/watch?v=f3WGFwCduY0&list=PL9FzW-m48fn1iR6WL4mjXtGi8P4TaPIAp&index=53&ab_channel=HeartBeast
资源位置
https://kenney.nl/assets/pixel-platformer
一、资源导入
在游戏中,texture的大小并不一定和实际想显示的相关联,尤其是3D游戏普及后,图片基本上默认为线性采样,所以第一件事就是设置出像素显示的渲染参数。
1、预设导入2D

在godot的2D渲染管道,是没有vector3,全部使用vector2,所以选择2D,godot会默认为像素渲染,不会开启线性采样。
把下载的资源packed的导入进去。

2、设置viewport
进入project settings

打开专业设置
把viewport设置为320*180

viewport是会在渲染管道默认渲染320*180的输出整列,超过的全部砍掉不渲染。和widow width不一样。
3、随便创建一个tscn,取名教world
给他创建一个node2D节点(空的没法保存)

运行,得到一个超级小的窗口,4k显示器,这个platform窗口还没半个巴掌大。

4、设置窗口大小,和拉升模式

tips:stretch 拉升
viewport顾名思义就是设置为2D输出。
5、拖入tile-packed

把图片拖入主窗口,会自动创建sprite2D,运行就可以看到像素模式的显示了。
检测完成后,删除这个sprite2D。
6、这里推荐5、1、2、3、4的顺序进行操作。
先看完在操作,也就不会做一步忘一步。
二、创建tile
1、创建一个staticbody,静态角色

staticbody,表示他不会经常动,他的vertex顶点坐标,会被打包放到显存中的static_mem中,这也不代表他不能动,修改显存的时间成本很高。
要创建动态它的子类有一个可动静态体

因为显存中也有会偶尔修改显存的专属显存,这可以用来创建移动的平台。
如果每帧都得改变vertex的话。就保存到rigidbody里面。
详细情况去阅读opengl中buffer操作的细节。用不到半小时。
2、给staticbody创建sprite和collsion

其中staticbody会表示sprite的vertex不会经常变动,会放到基本不修改的显存的位置保存。
collision会在物理碰撞中添加一个碰撞体。具体参考godot的开源代码,因为这玩意没有直接套用常用的2d碰撞体,而是自己改了改。
实际上staticbody在编程上面之属于node的一个参数,godot把它设置为专门的node子类,更加直观,非常棒。
3、给sprite2D设置为tile
拖进去

打开region

打开grid snap 网格切割,每个网格间距为18*18,网格与网格之间的偏移为0,网格开始的偏移为0.

打开scene的gird,设置为9*9,这样可以有吸附功能,非常的爽

把collision设置为方形的

适当调整下

这里显示的碰撞是半透明的在上面,因为编辑器的渲染是先来在下面的模式

如果看不到collisionshape,把它collisionshape放到sprite下面就好了。
4、把scene保存了。

5、把它拖到world试一试,ctrl+D就是创建副本,创建多个

三、创建character
character(扮演角色)
1、创建character

tips:collisionobject表示的是用来会产生碰撞的物体,并不代表他有碰撞的功能,这是godot的门槛,就好比“我心理特征是女性,但是我没有孕育生命的器官,而且也没有长一根棒子,你需要给我添加一个,如果不添加那我就不做了呗”。
这里的character只是个名字,代表未来分配到哪里,就像刚刚上大学的大一新生一样,说的是清华大学,实际上还没有清华大学大四毕业生的能力,需要给配教授。
2、加上animatedsprite和collision

3、创建animation

点一下,就会出一个ui

简单科普

L1添加动画的
L2动画播放控制
L3,第一个为导入文件夹内的素材,比如拆封过的sprite,第二个为导入整体tile
L4插入空白帧
L5左右移动帧
Idle是我已经改了名字的,翻译就是休息。
4、导入素材


横着9个,竖着3个

选择3-1导入,可以多选。
5、修改碰撞体

sprite挡住了collision
6、保存为player1,拖入world

7、运行

悬空的,因为没有重力。
rigidbody是自带重力的,character不仅仅可以用到platform游戏。还会用在2D平面游戏,如果这时候有重力,会往下掉。
四、给character加入重力
1、创建脚本

2、godot会自动给你写代码

3、现在已经可以正常跳跃和移动了

总结:
基本就是C语言写第一个游戏的引擎版本。简单快捷,非常好理解。
如果要学godot,得先看一遍c语言写游戏,和了解opengl的基本概念。甚至不需要实际操作。
是我非常推荐独立工作室,而且是高中生自学的游戏引擎。