Godot 3.0:你的第一个游戏教程在调试时遗漏了精灵

时间:2018-02-27 20:11:58

标签: godot gdscript

所以,我开始学习戈多游戏引擎并选择了#34;你的第一个游戏"教程,(链接:http://docs.godotengine.org/en/latest/getting_started/step_by_step/your_first_game.html)具体来说,"选择动画"部分。 这是他们提供的代码:

if velocity.x != 0:
$AnimatedSprite.animation = "right"
$AnimatedSprite.flip_v = false
$AnimatedSprite.flip_h = velocity.x < 0

elif velocity.y != 0:
    $AnimatedSprite.animation = "up"
    $AnimatedSprite.flip_v = velocity.y > 0

我得到的是当按下&#34; up&#34;或&#34; down&#34;密钥,精灵消失但移动直到按下&#34;左&#34;或者&#34;对,&#34;,当它再次出现时。我也注意到它没有垂直翻转。

我修复了丢失的精灵问题,如下所示:

if velocity.x != 0:
    $AnimatedSprite.animation = "right"
    $AnimatedSprite.flip_v = false
    $AnimatedSprite.flip_h = velocity.x < 0 
elif velocity.x != 0:
    $AnimatedSprite.animation = "up"
    $AnimatedSprite.flip_v = velocity.y > 0

但是还有一个问题,它并没有垂直改变。还有其他方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

Player脚本中,velocity.y的值由ui_upui_down输入控制,如下所示:

func _process(delta):
    var velocity = Vector2() # The player's movement vector.
    if Input.is_action_pressed("ui_right"):
        velocity.x += 1
    if Input.is_action_pressed("ui_left"):
        velocity.x -= 1
    if Input.is_action_pressed("ui_down"):
        velocity.y += 1
    if Input.is_action_pressed("ui_up"):
        velocity.y -= 1
    if velocity.length() > 0:
        velocity = velocity.normalized() * speed
        $AnimatedSprite.play()
    else:
        $AnimatedSprite.stop()

要让您在问题中描述的行为与该方法的实现有所不同,或者您在其他地方设置了velocity.y值。