大佬反馈的新写法
根据评论区大佬的反馈,第一和第二节中的写法可以用新的写法实现。 | |
---|---|
get_axis()
查阅文档后:Input的get_axis()方法可以实现获取水平或垂直方向上的的正反方向。
需要注意的一点是,get_axis()的两个参数,采用负方向、正方向的顺序,与get_action_strength的减法写法的顺序相反。
对第一节实例的修改
所以第一节实例的代码可以修改为:
extends Sprite
var speed = 20.0 # 速度 像素/秒
func _process(delta):
# 通过左右按键返回水平方向上的移动方向
# 普通键盘操控模式下,就只能返回1 或者-1,1表示右,而-1表示左。
var dir_x = Input.get_axis("ui_left","ui_right")
position.x += dir_x * speed
get_vector()
Input的get_vector()方法可以实现直接获取平面坐标系上的方向向量。同样也是采用先X后Y,然后“负-正-负-正”的参数顺序。
由于其返回的本身是个长度为1的向量,所以,并不需要在对其进行归一化。
第二节实例代码改进
所以第二节实例中的四向移动的代码可以修改为如下:
extends Sprite
var speed = 20.0 # 速度 像素/秒
var dir = Vector2.ZERO # 方向
# 每帧执行
func _process(delta):# 帧速率每秒60帧,则每帧为1/60秒,但是实际由于机器渲染效率的问题,每帧的渲染时间是不固定,这个时间就是delta
# 通过输入获取实际的方向
dir = Input.get_vector("ui_left","ui_right","ui_up","ui_down")
position += dir * speed