まえがき
自分で忘れないようにメモ
ひさびさに投稿するので変化に戸惑い中
環境
Godot 4.3
プロジェクトの作成
新規プロジェクトを作成します。
シーンの作成
通例なのか皆さんメインシーンから作成します、筆者も合わせます。
何も追加してないので空っぽですが、作成したらとりあえず保存しておきます。
子シーン
そうしたら新しいシーン(RigidBody3D)を作成します。
名前はなんでも良いです、ここではBoxとしておきます。
RigidBody3Dを親として、MeshInstance3DとCollisionShape3Dを追加します。
MeshInstance3DとCollisionShape3Dに形状を追加します。
黄色△が出てますが、形状(シェイプ)を追加すると消えます。
デフォルトのままBoxを追加すれば、特にサイズ変更など必要ないかと思います。
これで、とりあえずRigidBody3Dが動くようになったので、メインシーン内に配置して確認してみます。
親シーン
メインシーンにカメラと床とライトを追加して、子シーンをインスタンス化でBoxを読み込みます。
プロジェクトを実行すると、何も弄って無いので、こんな感じ落ちて止まります。
BoxのインスペクターのPhysicsMaterialを新規追加してBounceを弄る事で落下した後に跳ね返るようになります。
インプットの追加
プロジェクト設定から、インプットを追加します。
ここではpushと言う名前で追加し、Spaceキーを割り当てました。
GDScript
物理演算が実行出来たら、GDScriptでコードを書いていきます。
Boxにスクリプトをアタッチします。
extends RigidBody3D
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
pass # Replace with function body.
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
pass
追加すると、こんな感じになっています。
func _process(delta: float) -> void:
#ボタンが押されたら処理する
if Input.is_action_just_pressed("push"):
#回転に影響を与えず力を加えます。ここでは+Y方向に
apply_central_impulse(Vector3(0,10,0))
func _process(delta: float) -> void:の下に処理を追加して行きます。
ここではスペースキーが押されたら、apply_central_impulseが処理されます。
プロジェクトを実行し、スペースキーを押すと上に向かって跳ねます。
公式ドキュメントのここに書いてあるメソッドを追加すると面白い動きとかできそうです。
あとがき
ローカルの方向に飛ばすには、どうするのかな~
コメント
Your blog is a constant source of inspiration for me. Your passion for your subject matter shines through in every post, and it’s clear that you genuinely care about making a positive impact on your readers.