You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Godot中仅用触控板和键盘实现3D自由视角(笔记本无鼠标)

无鼠标笔记本在Godot中实现第一人称3D自由视角的操作方案

推荐按键组合

  • 视角旋转:用**方向键(←/→/↑/↓)**控制左右、上下视角转动;也可采用双模式:普通WASD控制移动,按住Shift+WASD控制视角,无需切换按键组
  • 移动:经典WASD控制前后左右,空格触发跳跃,左Ctrl实现下蹲
  • 快速转视角:按住Shift或Alt配合方向键,提升视角转动速度,适配大范围视角调整需求

按键映射配置

在Godot项目设置的「输入映射」面板中,添加并绑定以下动作:

  • forward:W键
  • backward:S键
  • left:A键
  • right:D键
  • jump:空格键
  • crouch:左Ctrl键
  • look_left:左方向键
  • look_right:右方向键
  • look_up:上方向键
  • look_down:下方向键
  • fast_look:Shift键

基础实现代码(GDScript)

将以下脚本挂载到CharacterBody3D节点上,关联好子节点Camera3D:

extends CharacterBody3D

@export var move_speed: float = 5.0
@export var jump_force: float = 4.0
@export var look_speed: float = 0.1
@export var fast_look_multiplier: float = 2.0

@onready var camera = $Camera3D

var yaw: float = 0.0
var pitch: float = 0.0

func _physics_process(delta: float) -> void:
    # 移动逻辑
    var input_dir = Input.get_vector("left", "right", "forward", "backward").normalized()
    var move_dir = transform.basis * input_dir
    velocity.x = move_dir.x * move_speed
    velocity.z = move_dir.z * move_speed

    # 跳跃与下蹲
    if is_on_floor():
        if Input.is_action_just_pressed("jump"):
            velocity.y = jump_force
        velocity.y = -0.5 if Input.is_action_pressed("crouch") else -1.0
    else:
        velocity.y -= 9.8 * delta

    move_and_slide()

func _process(delta: float) -> void:
    # 视角旋转逻辑
    var look_multiplier = fast_look_multiplier if Input.is_action_pressed("fast_look") else 1.0
    var look_input = Input.get_vector("look_left", "look_right", "look_up", "look_down") * look_speed * look_multiplier * delta

    yaw -= look_input.x
    pitch += look_input.y
    pitch = clamp(pitch, -1.5, 1.5) # 限制上下视角,避免镜头翻转

    camera.rotation.x = pitch
    rotation.y = yaw

内容的提问来源于stack exchange,提问作者Sainath Shetty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 19:46:02