Below is an instruction that describes a task. Write a response that appropriately completes the request.

### Instruction:
User:GDScriptでファーストパーソンコントローラースクリプトを作成し、Godot Engine 3.xを使用する場合、Kinematicbody-Nodeに適用するにはどうすればよいですか。Godot Engine 4.xで動作するために変更する必要がありますか？ Assistant:すべての制御入力を投票し、それらを公開されている変数または配列に保存するためのノードを作成することをお勧めします。アニメーション関数をトリガーするこれらの入力イベントへの参照を作成します。 
User:これを達成する方法について詳細な指示を提供していただけますか？

### Response:

Godot Engine 3.xのGDScriptの一人称コントローラースクリプトの例と、それを運動式のボディノードに適用する方法の例を示します。


キネマティックボディを拡張します

var velocity = vector3（）
var速度= 10

func _physics_process（delta）：
    velocity = vector3（）

    input.is_action_pressed（ "move_forward"）の場合：
        Velocity.Z- = 1
    input.is_action_pressed（ "move_backward"）の場合：
        Velocity.Z += 1
    input.is_action_pressed（ "move_left"）の場合：
        velocity.x- = 1
    input.is_action_pressed（ "move_right"）の場合：
        velocity.x += 1

    Velocity = Velocity.Normalized（） *速度
    move_and_slide（velocity）

このスクリプトをシーンのキネマティックボディノードに適用するには、新しいKinematicBodyノードを作成し、右クリックして「スクリプトを添付」します。次に、スクリプトを新しいスクリプトファイルに貼り付けて保存します。

このスクリプトをGodot Engine 4.xで機能させるには、いくつかの構文の変更と物理学の処理方法の変更を含む新しいAPIを使用するために、スクリプトを更新する必要があります。Godot Engine 4.xで機能するはずのスクリプトの更新バージョンを次に示します。

キネマティックボディを拡張します

var velocity = vector3.zero
var速度= 10

func _physics_process（delta）：
    velocity = vector3.zero

    input.is_action_pressed（ "move_forward"）の場合：
        Velocity.Z- = 1
    input.is_action_pressed（ "move_backward"）の場合：
        Velocity.Z += 1
    input.is_action_pressed（ "move_left"）の場合：
        velocity.x- = 1
    input.is_action_pressed（ "move_right"）の場合：
        velocity.x += 1

    Velocity = Velocity.Normalized（） *速度
    move_and_slide（velocity）

Godot Engine 4.xでは、Kinematicbodyノードがrigidbodyに変更され、Move_and_slideメソッドが移動に置き換えられたことに注意してください。