Godot是一个非常强大的游戏引擎,特别是在2D游戏方面表现极为出色,另外该引擎还是全部开源和免费的,作为入门游戏开发,这是非常好的选择,这里将会推出一个系列教程帮助大家快速入门Godot引擎,这一讲先从简单的项目创建开始。
一、如何打开Godot并且创建场景
打开Godot,建议将语言修改为en,在Godot中所有的场景和角色都是Scene,进入之后Godot,创建第一个Scene,并且选择2D场景,保存为Main文件。
创建主场景
保存成功之后,将节点名称也修改为Main
修改main节点名称
res://中会显示项目中的所有文件,建议创建两个文件夹assets和scene,前者用来存储相应的图片资源,后者用来存储所有的角色和代码
创建两个资源文件夹
如果希望打开资源文件夹所在的路径,可以右键单击res中的文件夹,选择Open in File Manager即可
打开资源文件夹
二、如何创建一个角色
在res文件夹中选择scene文件夹,右键选择new scene,之后选择Other Node,之后添加一个Sprite,Sprite可以设置材质,材质也就相当于图片。保存这个scene,取名为Player.tscn,之后将Node的名称也改为Player,接着将assets中的图片拖入到Texture(材质)中,此时就会显示相应的图片,图片在原点,Godot的坐标系向下y递增,和普通坐标系不一样。
创建一个新的角色
选择回到Main场景,保存之后,将Player.tscn文件拖入到Main场景中。之后将main场景设置为默认场景,点击右上角的运行图标即可运行。
设置main为主场景
到此为止一个简单的godot的场景就算搭建完成了。下一步需要加入代码让角色动起来。
三、加入简单的代码
可以在所有的节点上添加代码,如果在Player角色中添加,所有的Player角色都可以执行这些代码
-
在player中添加脚本。
选中Player这个scene,之后选中节点,点击添加脚本的图标添加脚本
为Player添加代码
在学习初期,代码模块先选择为Empty,这样代码看起来简单一些,接下来编写一些简单的代码
extends Sprite
func _ready():
print("player ok")
_ready
是节点加载完成之后要执行的方法,_ready
方法仅仅只会执行一次,之后运行程序就会发现输出了player ok的代码。如果代码是编写在Player角色中的话,将角色加入到scene中,每个角色都会执行这个代码。
四、加入更多有趣的代码
进入Player的代码中,可以通过顶部菜单快速进入。
_ready()
方法只会执行一次,_process(delta)
方法会反复的执行,先来学习如何进行旋转。要理解旋转,需要了解弧度的概念。弧度是角度的另外一种表示方式,由于它的计算简单,在计算机中通常喜欢使用弧度来替换角度,弧度a和角度b的关系,a = (PI/180) * b
角度360°相当于弧度的2*PI,角度90°相当于PI/2。在_process
中加入让角色旋转的代码
func _process(delta):
self.rotation += PI #每一次旋转弧度PI,相当于180°
我们会发现旋转得非常的快,而且不同的电脑由于cpu的性能不一致,旋转也是不一样的,假设两帧之间的间隔是1秒,那么就会一秒旋转180°,加入两帧之间的间隔是0.5秒,那就意味着一秒旋转2*180°。如何能够统一呢?
如果让旋转的角度同时乘以两帧之间的间隔是不是就能统一起来了。而函数_process(delta)
中的delta参数就是两帧之间的间隔。所以改造一下程序
func _process(delta):
self.rotation += PI * delta #每一次旋转弧度PI,相当于180°
五、键盘控制
下面我们添加一个新角色,让键盘可以控制其进行移动,第一步将图片资源添加到assets文件夹中,之后创建一个新的Scene,选择Other Node,还是选择Sprite,保存为Tank,将Tank的图片拖入到材质中,为Tank添加GD代码。
添加Tank角色
在外部创建一个变量speed存储坦克的移动速度,之后再process方法中添加键盘控制代码
extends Sprite
var speed = 200 #移动速度为200
func _process(delta):
if Input.is_action_pressed("ui_left"):
#表示向左移动
position.x -= speed*delta
if Input.is_action_pressed("ui_right"):
#向右移动
position.x += speed*delta
if Input.is_action_pressed("ui_up"):
#向上移动
position.y -= speed*delta
if Input.is_action_pressed("ui_down"):
#向下移动
position.y += speed*delta
将Tank添加到main场景中,运行发现tank已经可以通过键盘控制了,如果希望通过wasd键来控制该怎么办呢?
选择project->project setting之后在InputMap中添加ui键的对应,我们发现不仅可以添加键盘上的其他键,还可以添加游戏手柄的按键。
修改键盘的控制按键
到此为止,键盘的控制也就完成了,这一部分的内容讲解了如何完成一个Godot项目的创建。下一篇将会讲解如何完成角色之间的交互。
网友评论