Here's an example of a first-person controller script in GDscript for Godot Engine 3.x, applied to a KinematicBody node:
extends KinematicBody

var speed = 5
var gravity = 9.8
var jump_speed = 8

func _physics_process(delta):
    var velocity = Vector3()

    if is_on_floor():
        velocity.y = -gravity
    if Input.is_action_pressed("ui_up"):
        velocity.z -= speed
    if Input.is_action_pressed("ui_down"):
        velocity.z += speed
    if Input.is_action_pressed("ui_left"):
        velocity.x -= speed
    if Input.is_action_pressed("ui_right"):
        velocity.x += speed
    if Input.is_action_just_pressed("jump") and is_on_floor():
        velocity.y = jump_speed

    move_and_slide(velocity)

In Godot Engine 4.x, the equivalent node to the KinematicBody is the RigidBody. The equivalent first-person controller script would look like this:

extends RigidBody

var speed = 5
var gravity = 9.8
var jump_speed = 8

func _physics_process(delta):
    var velocity = Vector3()

    if is_on_floor():
        velocity.y = -gravity
    if Input.is_action_pressed("ui_up"):
        velocity.z -= speed
    if Input.is_action_pressed("ui_down"):
        velocity.z += speed
    if Input.is_action_pressed("ui_left"):
        velocity.x -= speed
    if Input.is_action_pressed("ui_right"):
        velocity.x += speed
    if Input.is_action_just_pressed("jump") and is_on_floor():
        velocity.y = jump_speed

    move_and_slide(velocity)

Note that in this example, the use of move_and_slide() is replaced with apply_impulse() to apply the velocity changes to the rigid body.
ต่อไปนี้เป็นตัวอย่างของสคริปต์ควบคุมบุคคลที่หนึ่งใน GDscript สำหรับ Godot Engine 3.x ที่ใช้กับโหนด KinematicBody: ขยาย KinematicBody var speed = 5 var Gravity = 9.8 var jump_speed = 8 func _physics_process(delta): var velocity = Vector3( ) if is_on_floor(): velocity.y = -gravity ถ้า Input.is_action_pressed("ui_up"): velocity.z -= ความเร็ว ถ้า Input.is_action_pressed("ui_down"): velocity.z += ความเร็ว ถ้า Input.is_action_pressed(" ui_left"): velocity.x -= ความเร็ว หาก Input.is_action_pressed("ui_right"): velocity.x += ความเร็ว หาก Input.is_action_just_pressed("jump") และ is_on_floor(): velocity.y = jump_speed move_and_slide(velocity) In Godot Engine 4.x ซึ่งเป็นโหนดที่เทียบเท่ากับ KinematicBody คือ RigidBody สคริปต์ตัวควบคุมบุคคลที่หนึ่งที่เทียบเท่าจะมีลักษณะดังนี้: ขยาย RigidBody var speed = 5 var Gravity = 9.8 var jump_speed = 8 func _physics_process(delta): var velocity = Vector3() if is_on_floor(): velocity.y = -gravity if Input.is_action_pressed("ui_up"): velocity.z -= ความเร็ว หาก Input.is_action_pressed("ui_down"): velocity.z += ความเร็ว หาก Input.is_action_pressed("ui_left"): velocity.x -= ความเร็ว หาก Input is_action_pressed("ui_right"): velocity.x += ความเร็ว ถ้า Input.is_action_just_pressed("jump") และ is_on_floor(): velocity.y = jump_speed move_and_slide(velocity) โปรดทราบว่าในตัวอย่างนี้ การใช้ move_and_slide() จะถูกแทนที่ ด้วย Apply_impulse() เพื่อใช้การเปลี่ยนแปลงความเร็วกับวัตถุแข็งเกร็ง
spam fails_task lang_mismatch pii not_appropriate hate_speech sexual_content quality toxicity humor helpfulness creativity violence