ChatGPTさんにGodot Engine のサンプルコード教えて下さいもらった


ちゃんと動きそうなコード

頼むと違うメソッド使って書き換えてくれる

再送頼むとちゃんともう一度表示してくれる

すごい

box headroom
よろしくお願いします
こんにちは。どういたしましょうか?




box headroom
分からないことは無理に答えなくて良いので、正直に分からないって言って下さいね?
そうですね。正直にお答えすることができますので、お気軽にお問い合わせください。




box headroom
Gdscript でコントローラーの入力を受け取りプレイヤーを動かすサンプルコードを教えて下さい
以下のようなコードで、Godot Engine でのゲームでコントローラーの入力を受け取り、プレイヤーを動かすことができます。

Copy code


extends KinematicBody

var velocity = Vector3()

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

# コントローラーのジョイスティックの入力を受け取る
if Input.is_action_pressed("ui_right"):
input_direction += Vector3(1, 0, 0)
if Input.is_action_pressed("ui_left"):
input_direction += Vector3(-1, 0, 0)
if Input.is_action_pressed("ui_down"):
input_direction += Vector3(0, 0, -1)
if Input.is_action_pressed("ui_up"):
input_direction += Vector3(0, 0, 1)

# 入力方向を正規化する
if input_direction.length() > 0:
input_direction = input_direction.normalized()

# 入力方向に応じて速度を更新する
velocity = input_direction * 100

# 速度に応じてプレイヤーを移動する
move_and_slide(velocity)

上記のコードでは、_physics_process() メソッド内で ui_right、ui_left、ui_down、ui_up という名前のアクションをトリガーとして、コントローラーの入力を受け取ります。その後、入力方向に応じて速度を更新し、move_and_slide() メソッドを使用してプレイヤーを移動します。

ただし、このコードでは、プレイヤーが地面に接していることを前提としています。地面に接していない場合や、壁や障害物と衝突した場合は、プレイヤーが正常に動作しない可能性があります。




box headroom
同じコードをInputクラスを用いてお願いします
次のように、Input クラスを使用してコントローラーの入力を受け取ることができます。

Copy code


extends KinematicBody

var velocity = Vector3()

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

# コントローラーのジョイスティックの入力を受け取る
if Input.get_action_strength("ui_right") > 0:
input_direction += Vector3(1, 0, 0)
if Input.get_action_strength("ui_left") > 0:
input_direction += Vector3(-1, 0, 0)
if Input.get_action_strength("ui_down") > 0:
input_direction += Vector3(0, 0, -1)
if Input.get_action_strength("ui_up") > 0:
input_direction += Vector3(0, 0, 1)

# 入力方向を正規化する
if input_direction.length() > 0:
input_direction = input_direction.normalized()

# 入力方向に応じて速度を更新する
velocity = input_direction * 100

# 速度に応じてプレイヤーを移動する
move_and_slide(velocity)

上記のコードでは、_physics_process() メソッド内で ui_right、ui_left、ui_down、ui_up という名前のアクションをトリガーとし



box headroom
次は、マウスを使ってプレイヤーを動かすコードをお願いします
network error

ごめんなさい 途中ネットワークエラーで表示が帰依たので、同じコードをもう一度
お手数をおかけします。以下のようなコードで、Godot Engine でのゲームでマウスを使ってプレイヤーを動かすことができます。


extends KinematicBody

var velocity = Vector3()

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

# マウスカーソルの位置をスクリーン座標系からワールド座標系に変換する
var mouse_position = get_viewport().get_mouse_position()
var world_position = get_viewport().get_world_2d().get_camera().unproject_position(mouse_position)

# マウスカーソルとプレイヤーの位置から、入力方向を計算する
input_direction = (world_position - get_global_transform().origin).normalized()

# 入力方向に応じて速度を更新する
velocity = input_direction * 100

# 速度に応じてプレイヤーを移動する
move_and_slide(velocity)





box headroom
2Dゲームの場合は?
2D ゲームの場合は、以下のように KinematicBody2D を継承したノードを使用すると、簡単にプレイヤーを動かすことができます。

Copy code


extends KinematicBody2D

var velocity = Vector2()

func _physics_process(delta):
var input_direction = Vector2()

# マウスカーソルの位置をスクリーン座標系からワールド座標系に変換する
var mouse_position = get_viewport().get_mouse_position()
var world_position = get_viewport().get_world_2d().get_camera().unproject_position(mouse_position)

# マウスカーソルとプレイヤーの位置から、入力方向を計算する
input_direction = (world_position - get_global_transform().origin).normalized()

# 入力方向に応じて速度を更新する
velocity = input_direction * 100

# 速度に応じてプレイヤーを移動する
move_and_slide(velocity)

上記のコードでは、_physics_process() メソッド内で、マウスカーソルの位置をスクリーン座標系からワールド座標系に変換し、プレイヤーとの位置から入力方向を計算します。その後、入力方向に応じて速度を更新します。

ただし、このコードでは、プレイヤーが地面に接していることを前提としています。地面に接していない場合や、壁や障害物と衝突した場合は、プレイヤーが正常に動作しない可能性があります。

最後に、入力方向に応じてプレイヤーを移動するには、次のように move_and_slide() メソッドを使用します。

Copy code
# 速度に応じてプレイヤーを移動する
move_and_slide(velocity)




···
ChatGPT Dec 15 Version. Free Research Preview. Our goal is to make AI systems more natural and safe to interact with. Your feedback will help us improve.