网站建设就找桥三科技,网站备案加急,硬件开发设计,深圳市前十的互联网推广公司GDScript 是Godot自带的编程语言#xff0c;用于编写游戏逻辑#xff0c;它是一种高级面向对象的指令式编程语言#xff0c;使用渐进类型#xff0c;专为 Godot 构建。在这一小节里#xff0c;我将自学用GDScript语言控制主人公的行走和攻击。
一、给Player节点添加GDScr…GDScript 是Godot自带的编程语言用于编写游戏逻辑它是一种高级面向对象的指令式编程语言使用渐进类型专为 Godot 构建。在这一小节里我将自学用GDScript语言控制主人公的行走和攻击。
一、给Player节点添加GDScript
在场景面板中选择Player节点然后单击上方的给选中节点添加脚本快捷按钮然后在弹出的对话框中选择路径按钮然后选择脚本保存路径为res//Scripts中这样就创建了Player节点添加GDScript语言。
因为选择的player节点为CharacterBody2D节点所以新建的脚步语言会有一些默认的代码在里面简单看一下
二、让主人公动起来
因为游戏设置的是平面2D游戏四个方向行走所以将重力有关代码删除。因为用到AnimationTree所以需要定义一下任务的状态同时AnimationTree需要人物的移动方向所以要判断用户输入。
1.定义人物的状态。
人物状态用到了枚举类型enum关机键字枚举类型是用于定义一组具有离散值的常量它可以让数据更简洁更易读。代码如下
enum {WALK,SWORD
}这里面WALK其实质就是表示数字1SWORD表示数字2。 定义一个变量并设置默认为WALK,代码如下
var state WALK还需要在_physics_process函数里面使用代码如下
match state:WALK:walk_state()SWORD:sword_state()这段代码表示当主人公的状态state为WALK时执行walk_state()函数当为Sword执行sword_state()函数。所以需要定义两个函数相关代码如下
func walk_state():var direction Vector2.ZEROdirection.x Input.get_axis(left, right)direction.y Input.get_axis(up, down)if direction:velocity direction * SPEEDelse:velocity Vector2.ZERO
func sword_state():pass这时候我们的完整代码如下这个样子
extends CharacterBody2D
enum {WALK,SWORD
}
var state WALK
const SPEED 300.0
func _physics_process(delta):match state:WALK:walk_state()SWORD:sword_state()move_and_slide()
func walk_state():var direction Vector2.ZEROdirection.x Input.get_axis(left, right)direction.y Input.get_axis(up, down)if direction:velocity direction * SPEEDelse:velocity Vector2.ZERO
func sword_state():pass2.按键的设置
上述代码实现了人物移动但是需要对按键设置才能生效我习惯用W、A、S、D按键时限人物的移动。 单击菜单栏项目选择项目设置在出现的对话框中切换到输入映射然后输入left单击添加按钮这样就添加一个按键了。
在出现的列表中选择列表后方的加号弹出的对话再按下键盘上的A键它会自动监听输入这样A就对应上left了。
同理设置好D键对应rightW键对应topS键对应down。最后结果如下
设置完按键输入可以测试一下了效果如下
按下键盘上的ASWD按键主人公就会移动了。但是人物移动动画还没有改变下面就让人物随着移动变化而改变动画。
3.让人物的运动和动画结合起来
这个需要完善代码。首先代码中要获取AnimationTree节点利用AnimationTree节点的parameters下playback属性进行播放。需要把playback下的Idle、Sword、Walk的blend_position设置为0,0具体实现代码如下
这里面有些细节需要强调一下一是函数内代码必须与函数头部空一个Table键不然就不算真个函数内部代码第二个是获取某些节点或属性可以直接拖入到代码中下面演示一下
最后看一下本节都学了啥给Player节点添加GDScript并编写代码控制了人物的移动和对应的动画最后展示效果如下
看看是不是很炫酷啊今天就到这下节再见。
最后我把本节源代码全部上传需要的同学点击下载。