Here's the commented first-person controller script in GDscript for Godot Engine 3.x, applied to a KinematicBody node:

```
# Extend the script from the KinematicBody node
extends KinematicBody

# Define the movement speed, gravity and jump speed variables
var speed = 5
var gravity = 9.8
var jump_speed = 8

# Function to handle the physics update
func _physics_process(delta):
    # Create a Vector3 variable to store the velocity
    var velocity = Vector3()

    # If the player is on the floor, apply gravity
    if is_on_floor():
        velocity.y = -gravity

    # Check if the player presses the up arrow key
    if Input.is_action_pressed("ui_up"):
        # Reduce the velocity in the Z axis by the speed variable
        velocity.z -= speed

    # Check if the player presses the down arrow key
    if Input.is_action_pressed("ui_down"):
        # Increase the velocity in the Z axis by the speed variable
        velocity.z += speed

    # Check if the player presses the left arrow key
    if Input.is_action_pressed("ui_left"):
        # Reduce the velocity in the X axis by the speed variable
        velocity.x -= speed

    # Check if the player presses the right arrow key
    if Input.is_action_pressed("ui_right"):
        # Increase the velocity in the X axis by the speed variable
        velocity.x += speed

    # Check if the player presses the jump key and is on the floor
    if Input.is_action_just_pressed("jump") and is_on_floor():
        # Increase the velocity in the Y axis by the jump speed variable
        velocity.y = jump_speed

    # Use the move_and_slide function to apply the velocity changes and handle collisions
    move_and_slide(velocity)


```


And here's the commented equivalent first-person controller script in GDscript for Godot Engine 4.x, applied to a RigidBody node:


```
# Extend the script from the RigidBody node
extends RigidBody

# Define the movement speed, gravity and jump speed variables
var speed = 5
var gravity = 9.8
var jump_speed = 8

# Function to handle the physics update
func _physics_process(delta):
    # Create a Vector3 variable to store the velocity
    var velocity = Vector3()

    # If the player is on the floor, apply gravity
    if is_on_floor():
        velocity.y = -gravity

    # Check if the player presses the up arrow key
    if Input.is_action_pressed("ui_up"):
        # Reduce the velocity in the Z axis by the speed variable
        velocity.z -= speed

    # Check if the player presses the down arrow key
    if Input.is_action_pressed("ui_down"):
        # Increase the velocity in the Z axis by the speed variable
        velocity.z += speed

    # Check if the player presses the left arrow key
    if Input.is_action_pressed("ui_left"):
        # Reduce the velocity in the X axis by the speed variable
        velocity.x -= speed

    # Check if the player presses the right arrow key
        if Input.is_action_pressed("ui_up"):
        velocity.z -= speed
#Here, the is_action_pressed method is used to check if the "ui_up" action is currently being pressed by the player. If it is, the velocity in the z direction is decreased by the speed variable. This will cause the player character to move forward in the scene.

    if Input.is_action_pressed("ui_down"):
        velocity.z += speed
#Similarly, this checks if the "ui_down" action is currently being pressed and, if so, increases the velocity in the z direction by the speed variable. This will cause the player character to move backward in the scene.

    if Input.is_action_pressed("ui_left"):
        velocity.x -= speed
#This checks if the "ui_left" action is currently being pressed and, if so, decreases the velocity in the x direction by the speed variable. This will cause the player character to move left in the scene.

    if Input.is_action_pressed("ui_right"):
        velocity.x += speed

#This checks if the "ui_right" action is currently being pressed and, if so, increases the velocity in the x direction by the speed variable. This will cause the player character to move right in the scene.

    if Input.is_action_just_pressed("jump") and is_on_floor():
        velocity.y = jump_speed
#Finally, this checks if the "jump" action has just been pressed (using is_action_just_pressed) and if the player character is currently on the floor (using is_on_floor). If both conditions are met, the velocity in the y direction is set to the jump_speed variable, which will cause the player character to jump.

    move_and_slide(velocity)
#The move_and_slide method is called with the velocity vector to move the player character in the scene based on the player's inputs.

```
ต่อไปนี้เป็นสคริปต์ควบคุมบุคคลที่หนึ่งที่ได้รับความเห็นใน GDscript สำหรับ Godot Engine 3.x ซึ่งใช้กับโหนด KinematicBody: ``` # ขยายสคริปต์จากโหนด KinematicBody จะขยาย KinematicBody # กำหนดตัวแปรความเร็วในการเคลื่อนที่ แรงโน้มถ่วง และความเร็วในการกระโดด var speed = 5 var Gravity = 9.8 var jump_speed = 8 # ฟังก์ชั่นเพื่อจัดการการอัปเดตฟิสิกส์ func _physics_process(delta): # สร้างตัวแปร Vector3 เพื่อเก็บความเร็ว var velocity = Vector3() # ถ้าผู้เล่นอยู่บนพื้น ให้ใช้แรงโน้มถ่วงถ้า is_on_floor (): velocity.y = -gravity # ตรวจสอบว่าผู้เล่นกดปุ่มลูกศรขึ้นหรือไม่หาก Input.is_action_pressed("ui_up"): # ลดความเร็วในแกน Z ด้วยตัวแปรความเร็ว velocity.z -= speed # ตรวจสอบว่า ผู้เล่นกดปุ่มลูกศรลงหาก Input.is_action_pressed("ui_down"): # เพิ่มความเร็วในแกน Z ด้วยตัวแปรความเร็ว velocity.z += ความเร็ว # ตรวจสอบว่าผู้เล่นกดปุ่มลูกศรซ้ายถ้า Input.is_action_pressed( "ui_left"): # ลดความเร็วในแกน X ด้วยตัวแปรความเร็ว velocity.x -= ความเร็ว # ตรวจสอบว่าผู้เล่นกดปุ่มลูกศรขวาหรือไม่หาก Input.is_action_pressed("ui_right"): # เพิ่มความเร็วใน X แกนโดยตัวแปรความเร็ว velocity.x += ความเร็ว # ตรวจสอบว่าผู้เล่นกดปุ่มกระโดดและอยู่บนพื้นหรือไม่หาก Input.is_action_just_pressed("jump") และ is_on_floor(): # เพิ่มความเร็วในแกน Y โดยการกระโดด ตัวแปรความเร็ว velocity.y = jump_speed # ใช้ฟังก์ชัน move_and_slide เพื่อใช้การเปลี่ยนแปลงความเร็วและจัดการกับการชน move_and_slide(velocity) ``` และนี่คือสคริปต์ตัวควบคุมบุคคลที่หนึ่งที่เทียบเท่ากับความคิดเห็นใน GDscript สำหรับ Godot Engine 4.x ซึ่งนำไปใช้กับ RigidBody node: ``` # ขยายสคริปต์จากโหนด RigidBody ขยาย RigidBody # กำหนดตัวแปรความเร็วในการเคลื่อนที่ แรงโน้มถ่วง และความเร็วในการกระโดด var speed = 5 var Gravity = 9.8 var jump_speed = 8 # ฟังก์ชั่นเพื่อจัดการการอัปเดตฟิสิกส์ func _physics_process(delta) : # สร้างตัวแปร Vector3 เพื่อเก็บความเร็ว var velocity = Vector3() # ถ้าผู้เล่นอยู่บนพื้น ให้ใช้แรงโน้มถ่วง if is_on_floor(): velocity.y = -gravity # ตรวจสอบว่าผู้เล่นกดปุ่มลูกศรขึ้นหรือไม่หาก Input .is_action_pressed("ui_up"): # ลดความเร็วในแกน Z ด้วยตัวแปรความเร็ว velocity.z -= speed # ตรวจสอบว่าผู้เล่นกดปุ่มลูกศรลงหรือไม่หาก Input.is_action_pressed("ui_down"): # เพิ่มความเร็ว ในแกน Z โดยตัวแปรความเร็ว velocity.z += ความเร็ว # ตรวจสอบว่าผู้เล่นกดปุ่มลูกศรซ้ายหรือไม่ถ้า Input.is_action_pressed("ui_left"): # ลดความเร็วในแกน X ด้วยตัวแปรความเร็ว velocity.x - = ความเร็ว # ตรวจสอบว่าผู้เล่นกดปุ่มลูกศรขวาหรือไม่หาก Input.is_action_pressed("ui_up"): velocity.z -= speed #ที่นี่ ใช้เมธอด is_action_pressed เพื่อตรวจสอบว่าการกระทำ "ui_up" กำลังถูกกดโดย ผู้เล่น หากเป็นเช่นนั้น ความเร็วในทิศทาง z จะลดลงตามตัวแปรความเร็ว นี่จะทำให้ตัวละครของผู้เล่นก้าวไปข้างหน้าในฉาก if Input.is_action_pressed("ui_down"): velocity.z += speed #ในทำนองเดียวกัน วิธีนี้จะตรวจสอบว่ามีการกดการดำเนินการ "ui_down" อยู่หรือไม่ และหากเป็นเช่นนั้น จะเพิ่มความเร็วในทิศทาง z ด้วยตัวแปรความเร็ว นี่จะทำให้ตัวละครของผู้เล่นถอยหลังในฉาก if Input.is_action_pressed("ui_left"): velocity.x -= speed #This ตรวจสอบว่ามีการกดการกระทำ "ui_left" อยู่หรือไม่ และหากเป็นเช่นนั้น จะลดความเร็วในทิศทาง x ด้วยตัวแปรความเร็ว นี่จะทำให้ตัวละครของผู้เล่นขยับไปทางซ้ายในฉาก if Input.is_action_pressed("ui_right"): velocity.x += speed #This ตรวจสอบว่ามีการกดการกระทำ "ui_right" อยู่หรือไม่ และหากเป็นเช่นนั้น จะเพิ่มความเร็วในทิศทาง x ด้วยตัวแปรความเร็ว นี่จะทำให้ตัวละครของผู้เล่นเคลื่อนไหวไปทางขวาในฉาก if Input.is_action_just_pressed("jump") และ is_on_floor(): velocity.y = jump_speed #สุดท้ายนี้ จะตรวจสอบว่าเพิ่งกดการกระทำ "jump" หรือไม่ (โดยใช้ is_action_just_pressed) และตัวละครของผู้เล่นอยู่บนพื้นหรือไม่ (โดยใช้ is_on_floor) หากตรงตามเงื่อนไขทั้งสอง ความเร็วในทิศทาง y จะถูกตั้งค่าเป็นตัวแปร jump_speed ซึ่งจะทำให้ตัวละครของผู้เล่นกระโดด move_and_slide(velocity) #เมธอด move_and_slide ถูกเรียกด้วยเวกเตอร์ความเร็วเพื่อย้ายตัวละครของผู้เล่นในฉากตามอินพุตของผู้เล่น ```
spam fails_task lang_mismatch pii not_appropriate hate_speech sexual_content quality toxicity humor helpfulness creativity violence