2024/12/21(土) [n年前の日記]
#1 [godot] ゴルフコースにピンを追加してみた
_昨日
に続き、Windows10 x64 22H2 + Godot Engine 4.3 64bit でゴルフゲームっぽいものが作れないものかなと試してる。
コースにピンが ―― 旗と旗竿が無いとそれっぽくないなと思えてきたので、blender 3.6.18 LTS で旗と旗竿を作成して追加してみた。また、各StaticBody3D に、グループとして flag と flagstick も追加。当たった何かがこのグループ名なら、旗、もしくは旗竿に当たっていると判別できる。
旗竿にボールが当たると跳ね返ることは確認できた。
旗にも処理を追加したい。いわゆる旗包みを表現したい。しかし、ここでハマった…。
コースにピンが ―― 旗と旗竿が無いとそれっぽくないなと思えてきたので、blender 3.6.18 LTS で旗と旗竿を作成して追加してみた。また、各StaticBody3D に、グループとして flag と flagstick も追加。当たった何かがこのグループ名なら、旗、もしくは旗竿に当たっていると判別できる。
旗竿にボールが当たると跳ね返ることは確認できた。
旗にも処理を追加したい。いわゆる旗包みを表現したい。しかし、ここでハマった…。
◎ ボールが当たらない :
まず、ボールが旗に当たってくれない。そのうち偶然当たってくれるだろうと気楽に試してたら、何十回もボールを打つ羽目に…。
こんなことはやってられないと、Ctrl+Z を押したら打つ前の位置に戻る仕様を入れてみた。これで動作確認が随分楽になった。もしかするとこの仕様は、ゲームにする時も入れておいたほうがいいのかもしれない…? 打ち直しができたほうがいいのだろうか…?
こんなことはやってられないと、Ctrl+Z を押したら打つ前の位置に戻る仕様を入れてみた。これで動作確認が随分楽になった。もしかするとこの仕様は、ゲームにする時も入れておいたほうがいいのかもしれない…? 打ち直しができたほうがいいのだろうか…?
◎ 旗にボールが貼り付く :
そのうちようやくボールが旗に当たってくれたのだけど、今度は旗にボールがピタリとくっ付いて、目が点になった。
考えてみたら当たり前。旗とボールが衝突していたらボールの速度をゼロにするという安易な処理を書いてしまったので…。ボールが旗にめり込んだ状態でボールの速度がゼロになって、そのままずっと旗にめり込んでるから、ボールの速度もずっとゼロにされてしまう。ピクリとも動かなくなるのは当たり前。
結局、前フレームではどこに当たっていたかを記憶して、衝突した場所が、空中 → 旗に変わった瞬間だけ速度をゼロにするようにしてみた。これなら旗に当たってからポトリと下に落ちてくれた。
考えてみたら当たり前。旗とボールが衝突していたらボールの速度をゼロにするという安易な処理を書いてしまったので…。ボールが旗にめり込んだ状態でボールの速度がゼロになって、そのままずっと旗にめり込んでるから、ボールの速度もずっとゼロにされてしまう。ピクリとも動かなくなるのは当たり前。
結局、前フレームではどこに当たっていたかを記憶して、衝突した場所が、空中 → 旗に変わった瞬間だけ速度をゼロにするようにしてみた。これなら旗に当たってからポトリと下に落ちてくれた。
◎ カップイン判別処理を追加 :
せっかくだから、カップイン判別も入れてみた。ボールが静止した状態でカップに衝突していたらカップイン。「CUP IN !」ラベルもその時だけ表示。
これだけでも一気にゲームっぽい感じになってきた。
これだけでも一気にゲームっぽい感じになってきた。
◎ グリーン上の動作を別処理にした :
グリーン上でボールを打つときは、斜め上ではなく、横方向にだけ力を追加するようにしてみた。ちなみに、RigidBody3D の apply_impulse() で、瞬間的に力を加えることができる。
しかし、ボールが全然転がらない…。グリーンに限らず、何かと当たっていたら移動速度と回転速度をどんどん減衰させるように処理しているから、ボールに急激なブレーキがかかってしまう。
パターモードを用意して、グリーン上で打った時はそのモードにして、ボールの速度の減衰の仕方を変えてみるようにしたら多少はマシになった。
しかしそれでも、グリーン上でパターを打ってる感じには程遠い…。もしかするとミニゴルフの類を別途作って、そこで作り方を勉強したほうがいいのかもしれない。
しかし、ボールが全然転がらない…。グリーンに限らず、何かと当たっていたら移動速度と回転速度をどんどん減衰させるように処理しているから、ボールに急激なブレーキがかかってしまう。
パターモードを用意して、グリーン上で打った時はそのモードにして、ボールの速度の減衰の仕方を変えてみるようにしたら多少はマシになった。
しかしそれでも、グリーン上でパターを打ってる感じには程遠い…。もしかするとミニゴルフの類を別途作って、そこで作り方を勉強したほうがいいのかもしれない。
◎ 表示モデルデータをglTF 2.0にしてみた :
今までは、blender から Wavefront形式(.obj)で3Dモデルデータをエクスポートして、Godot Engine にインポートしていたけれど、.obj はノーマルマップ(法線マップ)が使えないっぽいので、別の形式で表示用モデルデータをインポートすることにした。
とりあえず、glTF 2.0 にしてみる。glTF 2.0 はエクスポート時に、以下の3種類のどれかを選べる。
glTF ならノーマルマップが反映されることを確認できた。
ただ、.obj のように、MeshInstance3D を作成して Mesh に .obj をドラッグアンドドロップする感じではなく、シーンタブ(ノード一覧リスト)にドラッグアンドドロップして、Node3Dとして追加する感じになるっぽい? この操作で合ってるのかな…。ちょっとよく分からない。
コリジョン用モデルデータを作る際には、今まで通り、.obj をインポートして、メッシュ → コリジョン形状を作成、を選ぶことにした。.gltf を利用した場合は、コリジョン形状作成をする方法が分からない…。
とりあえず、glTF 2.0 にしてみる。glTF 2.0 はエクスポート時に、以下の3種類のどれかを選べる。
- glTFバイナリ(.glb)
- glTF Separate (.gltf+.bin+テクスチャ)
- glTF Embedded (.gltf)
glTF ならノーマルマップが反映されることを確認できた。
ただ、.obj のように、MeshInstance3D を作成して Mesh に .obj をドラッグアンドドロップする感じではなく、シーンタブ(ノード一覧リスト)にドラッグアンドドロップして、Node3Dとして追加する感じになるっぽい? この操作で合ってるのかな…。ちょっとよく分からない。
コリジョン用モデルデータを作る際には、今まで通り、.obj をインポートして、メッシュ → コリジョン形状を作成、を選ぶことにした。.gltf を利用した場合は、コリジョン形状作成をする方法が分からない…。
[ ツッコむ ]
#2 [anime][neta] 勇者を名乗ることが許されるのはイケメンだけなのだろうか
妄想メモ。
ファンタジー異世界系の某TVアニメを視聴中にふと思ったのだけど。その手のジャンルの作品に登場する勇者という存在は、見てくれは人間で、なおかつ、イケメンでなければいけないものなのだろうか、と…。 *1
件のアニメは、主人公が暴走すると魔物みたいな外見になる設定なのだけど。その主人公とは別に、勇者という存在がその世界には居るはずだ、ということになってるようで…。見ていた感じでは、主人公がその勇者じゃないの? と思えたのだけど、劇中では主人公の見た目からして、コイツが勇者とかナイナイ、ありえない、ということになってるっぽくて。
そこでふと妄想してしまった。作中で勇者と呼ばれるキャラは、魔王だの邪竜だのを倒す存在だろうけど。そんなゴイスな連中を倒す存在がフツーの人間の見た目のままというのは、ちと無理があったりしないか…?
ショッカー怪人を倒せるのは、元ショッカー怪人だし。怪獣を倒せるのは、怪獣だし。宇宙人を倒せるのは、妖怪やモノノ怪の類だろうし。
であれば、魔王や邪竜を倒せる存在は、魔王や邪竜にしか見えないキャラだったりするほうが実は自然なのではないか…? 人間にしか見えないキャラがそういうアレコレを倒してしまうのって、本当は不自然じゃないか? 物語に登場する民衆は、勇者という存在を、きっと人間に違いない、それもイケメンに違いないと安易に思い込んでいたりしないか?
まあ、既にデビルマンのようなヒーローが存在していたりするので…。勇者とやらがブサメンだったり、そもそも人間の姿に見えない作品も、今ちょっと思い出せないだけで既にたくさんあるだろうなと…。
もっとも、現実世界でも熊だの虎だのゾウだのを人間が道具を使って倒しちゃうので、勇者が人間というのもそれほど不自然ではないのかもしれない…。害獣退治の一種と考えれば、まあ…。
いや、でも、見るからにマタギっぽい人と、ジャニーズタレントっぽい人が並んでたとして、どっちが害獣退治を成功させてくれそうかと言えば…。やっぱり前者じゃない? どうしてその手の作品では、後者がやり遂げてくれるはずだと皆で思い込めるのだろう…?
と、そこまで書いて、ふと脳裏にTOKIOの方々の姿が浮かんだ…。もしかして、勇者ってああいうイメージ? 「きっと彼なら…彼ならやってくれるはず…!」みたいな。あー、なんかちょっと分かったような気分にもなってきたような…? 勇者ってTOKIOみたいなソレかー。
只の妄想メモです。オチは無いです。
ファンタジー異世界系の某TVアニメを視聴中にふと思ったのだけど。その手のジャンルの作品に登場する勇者という存在は、見てくれは人間で、なおかつ、イケメンでなければいけないものなのだろうか、と…。 *1
件のアニメは、主人公が暴走すると魔物みたいな外見になる設定なのだけど。その主人公とは別に、勇者という存在がその世界には居るはずだ、ということになってるようで…。見ていた感じでは、主人公がその勇者じゃないの? と思えたのだけど、劇中では主人公の見た目からして、コイツが勇者とかナイナイ、ありえない、ということになってるっぽくて。
そこでふと妄想してしまった。作中で勇者と呼ばれるキャラは、魔王だの邪竜だのを倒す存在だろうけど。そんなゴイスな連中を倒す存在がフツーの人間の見た目のままというのは、ちと無理があったりしないか…?
ショッカー怪人を倒せるのは、元ショッカー怪人だし。怪獣を倒せるのは、怪獣だし。宇宙人を倒せるのは、妖怪やモノノ怪の類だろうし。
であれば、魔王や邪竜を倒せる存在は、魔王や邪竜にしか見えないキャラだったりするほうが実は自然なのではないか…? 人間にしか見えないキャラがそういうアレコレを倒してしまうのって、本当は不自然じゃないか? 物語に登場する民衆は、勇者という存在を、きっと人間に違いない、それもイケメンに違いないと安易に思い込んでいたりしないか?
まあ、既にデビルマンのようなヒーローが存在していたりするので…。勇者とやらがブサメンだったり、そもそも人間の姿に見えない作品も、今ちょっと思い出せないだけで既にたくさんあるだろうなと…。
もっとも、現実世界でも熊だの虎だのゾウだのを人間が道具を使って倒しちゃうので、勇者が人間というのもそれほど不自然ではないのかもしれない…。害獣退治の一種と考えれば、まあ…。
いや、でも、見るからにマタギっぽい人と、ジャニーズタレントっぽい人が並んでたとして、どっちが害獣退治を成功させてくれそうかと言えば…。やっぱり前者じゃない? どうしてその手の作品では、後者がやり遂げてくれるはずだと皆で思い込めるのだろう…?
と、そこまで書いて、ふと脳裏にTOKIOの方々の姿が浮かんだ…。もしかして、勇者ってああいうイメージ? 「きっと彼なら…彼ならやってくれるはず…!」みたいな。あー、なんかちょっと分かったような気分にもなってきたような…? 勇者ってTOKIOみたいなソレかー。
只の妄想メモです。オチは無いです。
*1: ちなみに、「パーティーから追放されたその治癒師、実は最強につき」というアニメだった。
[ ツッコむ ]
以上、1 日分です。