所以,我开始学习戈多游戏引擎并选择了#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
但是还有一个问题,它并没有垂直改变。还有其他方法可以解决这个问题吗?
答案 0 :(得分:0)
在Player
脚本中,velocity.y
的值由ui_up
和ui_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
值。