MakeFunG 2024-11-07 00:45 采纳率: 100%
浏览 10
已结题

Godot移动映射代码


extends CharacterBody2D

class_name Player

var move_speed : float = 100.0

# Called when the node enters the scene tree for the first time.
func _ready() -> void:
    pass # Replace with function body.

# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
    var direction : Vector2 = Vector2.ZERO
    direction.x = Input.get_action_strength("right") - Input.get_action_strength("left")
    direction.y = Input.get_action_strength("down") - Input.get_action_strength("up")
    
    velocity = direction * move_speed * delta
    
    pass


Godot 映射 设置了上下左右键并且写完了之后,调试的时候没有反应 什么原因?


  • 写回答

1条回答 默认 最新

  • 香格里辣 2024-11-07 00:46
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    从你提供的代码来看,你在Godot引擎中创建了一个玩家角色,并试图通过键盘的上下左右键来控制角色的移动。然而,你在调试时发现没有任何反应,这可能是由以下几个原因导致的:

    1. 输入节点未正确设置:你需要确保你有一个Input节点连接到你的场景树中。你可以通过在场景树中添加一个默认的Input节点来完成此操作。然后你的脚本就能通过这个节点来访问用户的输入。如果你在一个扩展场景树的环境中工作,可能还需要考虑添加正确的连接和路径到你的输入节点。
    2. 键盘映射问题:你可能没有正确地映射键盘键到操作("up","down","left","right")。在你的项目设置中(Project -> Project Settings -> Input),确保正确地设置了这些键盘映射。你应该看到类似于这样的映射:“right”被映射到“ui_right”,同样地,"left","up","down"也需要相应的映射。这些操作的名字应该与你在代码中使用的名字相匹配。
    3. 代码逻辑问题:你的代码逻辑可能存在问题。例如,你可能需要确保你的角色节点有一个velocity变量来存储移动速度,并且你可能需要调用一个方法来更新角色的位置。在你的代码中,你只是计算了速度但没有实际更新角色的位置。你可以通过调用类似move_and_slide()这样的方法来更新角色的位置。

    为了解决这个问题,你可以尝试以下步骤:

    • 确保你的场景树中有一个Input节点。
    • 在项目设置中正确映射键盘键到操作。
    • 更新你的代码以包含实际更新角色位置的逻辑。例如:
    func _process(delta: float) -> void:
        var direction : Vector2 = Vector2.ZERO
        direction.x = Input.get_action_strength("ui_right") - Input.get_action_strength("ui_left")
        direction.y = Input.get_action_strength("ui_down") - Input.get_action_strength("ui_up")
        velocity = direction * move_speed * delta
        position += velocity * delta  # 更新角色位置
    

    如果问题仍然存在,你可能需要进一步检查你的项目设置和代码逻辑,或者查看是否有其他潜在的错误或问题。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月15日
  • 已采纳回答 11月7日
  • 创建了问题 11月7日