うどんてっくメモ

技術的なメモをまったりと

【Godot】3Dオブジェクトの落下地点に何かしらの表記をしてみる

はじめに

本記事で紹介および検証を行なっているツール、ライブラリのバージョンは次の通りです。

  • Godot Engine v4.1.2.stable.mono.official

バージョンによっては挙動に差異がある場合もありますので、ご了承ください。

Sprite3DをRaycast3Dで判定した落下地点に配置

3Dゲームでオブジェクトが落下してきて、その落下地点を装飾する表現がよくあります。 それをGodotで手軽にやろうとしたメモです。

やることはシンプルで、Sprite3Dを落下地点に対して配置するだけです。 落下物のオブジェクトのシーンにSprite3Dをくっつけて、Raycast3Dによって落下地点を計算して配置しました。

スクリプトはこちらです。

func update_fall_marker():
    var fall_image = $FallImage
    var fall_ray_cast = $FallRayCast
    fall_ray_cast.force_raycast_update()
    if fall_ray_cast.is_colliding():
        var forecast_position = fall_ray_cast.get_collision_point()
        fall_image.visible = true
        fall_image.global_transform.origin = Vector3(forecast_position.x, forecast_position.y, forecast_position.z)
    else :
        fall_image.visible = false

パフォーマンスや見え方を考えればもっと最適な投影方法の仕組みが検討できるかと思いますが、手っ取り早く落ちモノの表現を作るならこれでも十分かなと思います。