收藏

Godot概览之快速创建一个项目

2022-04-07  本文已影响0人  孔浩

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角色都可以执行这些代码

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项目的创建。下一篇将会讲解如何完成角色之间的交互。

上一篇下一篇

猜你喜欢

热点阅读