基本的播放器平台代码,但不能在 godot 中使用基于方向的动画

问题描述 投票:0回答:1

所以基本上我试图使用 2d 播放器控制器的默认脚本,现在我正在努力根据脚本中的方向变量制作不同的动画,我的错误代码表明我需要 input.get_axis() 的两个参数在我的 if 语句中只有 放置一个,这样当我向左走时,精灵就会朝左走,但它不起作用。

extends CharacterBody2D


const SPEED = 300.0
const JUMP_VELOCITY = -400.0


func _physics_process(delta: float) -> void:
    $AnimatedSprite2D
    var direction := Input.get_axis("ui_left", "ui_right")
    # Add the gravity.
    if not is_on_floor():
        velocity += get_gravity() * delta

    # Handle jump.
    if Input.is_action_just_pressed("ui_accept") and is_on_floor():
        if direction == Input.get_axis("ui_left"):
            set_animation("default")
        velocity.y = JUMP_VELOCITY
    # Get the input direction and handle the movement/deceleration.
    # As good practice, you should replace UI actions with custom gameplay actions.
    if direction:
        velocity.x = direction * SPEED
    else:
        velocity.x = move_toward(velocity.x, 0, SPEED)

    move_and_slide()

我尝试过查找,但什么也没找到。所以请帮忙

game-development godot gdscript godot4
1个回答
0
投票

查看 Input.getAxis 的文档:Docs

该函数始终需要两个参数。一种为阴性,一种为阳性。结果是 -1 和 1 之间的浮点数,表示轴在特定方向之一移动的距离。

对于您的方向变量,这意味着:如果用户将摇杆完全向左移动,方向将为 -1,因为您声明了这是您的负面操作。完全正确的是 1。

总之,如果你想检查,如果玩家向左移动,你的比较应该如下所示:

if direction < 0:
© www.soinside.com 2019 - 2024. All rights reserved.