2020/04/01(水) [n年前の日記]
#1 [godot] Godto Engineについてまだまだ勉強中
チュートリアル動画を眺めながら勉強中。
_Godot 3.1: Creating a Simple 3D Game: Part 6 (Menu Screens, Text, Buttons, Signals) #GodotEngine - YouTube
_Godot 3.1: Creating a Simple 3D Game: Part 7 (Enemies, Animation, Collision, Game Over) #GodotEngine - YouTube
_Godot 3.1: Creating a Simple 3D Game: Part 8 (Collecting Coins, HUD, Counter, Timers) #GodotEngine - YouTube
分かったことをメモ。
独自の信号をどういう時に使うのかと言うと…。例えば、プレイヤーとコインが重なった際に、コイン側のスクリプト内で独自信号を出して、その独自信号をコイン数表示用Labelが受け取れば…。「プレイヤーとコインが重なった」ことを、コイン数表示用Labelが知ることができるので、コイン数表示用Labelが持ってるスクリプト内で、コインの獲得数を+1して表示を更新、といった処理が書けたりする。
_Godot 3.1: Creating a Simple 3D Game: Part 6 (Menu Screens, Text, Buttons, Signals) #GodotEngine - YouTube
_Godot 3.1: Creating a Simple 3D Game: Part 7 (Enemies, Animation, Collision, Game Over) #GodotEngine - YouTube
_Godot 3.1: Creating a Simple 3D Game: Part 8 (Collecting Coins, HUD, Counter, Timers) #GodotEngine - YouTube
分かったことをメモ。
- タイトル画面やゲームオーバー画面などの2D画面は、2Dシーンとして作成して .tscn で保存してしまえばいいらしい。
- Label、Button、ColorRect 等を配置すれば、メニュー画面っぽいソレは一応作れる。
- Label や Button は、Custom Fonts を指定してやることで、好きなフォント(.ttf や .otf)を使えるようになる。
- Custom Fonts は、DynamicFont を新規作成後、「DynamicFont」と表示されてる部分をクリックして、Font → Font Data に ttf や otf を指定する。
- Use Filter を有効にすると、フォントの見た目が綺麗になる。
- Custom Colors でフォントの文字色や影色を指定できる。
- Custom Constants で、影のオフセット値を指定できる。
- Button名が「Button」のままだと問題が出てくるらしい。Buttonノードだけは、別名に変更しておくこと。「button-title-play」とか。
- Button を押すと、pressed() という信号が出るので、その信号にスクリプト内の関数を接続してやれば、「ボタンが押されたら○○をせよ」といった処理を書ける。
- スクリプト内に get_tree().change_scene("res://シーン名.tscn") と書けば、そのシーンに移行できる。2Dシーンから3Dシーンへ、3Dシーンから2Dシーンへの移行も可能。
- プレイヤーキャラと重なるであろう、敵だのコインだのそういった種類のモノは、Area タイプにしておく。
- Area は、他の何かしらと重なった状態で表示することができる。
- Area も、アタリ範囲(CollisionShape等)を持たせないといけない。
- Area が他の何かと重なった時、body_entered という信号が出るので、それをスクリプト上の関数と接続しておけば、何かと重なった時にその関数が呼ばれるようになる。
- 関数の中で、if body.name == "ノード名": という感じで書けば、何と当たったのかを名前でチェックして判別できる。
- アニメーションをさせたい時は、AnimationPlayer を持たせてやる。
- AnimationPlayer を使えば、位置(Translation)や角度(Rotation)等を時間によって変化させることができる。
- Translation 等の右のほうに鍵っぽいアイコンがあるので、それをクリックすると、現在時刻?にキーフレームを打てる。
- スクリプト内で、$AnimationPlayer.play("アニメ名") と書けば、そのアニメを再生することができる。
- 3D画面上に、スコア表示等、2D的な情報表示をしたい場合は、Controlノードを追加して、その下に Label等をつけてやればいい。
- 画像を2D表示したい場合は Sprite を使う。Texture に png画像等を指定してやれば、その画像が表示される。
- Timerを持たせれば、指定時間が経過したら何かの処理をする、といったことができる。
- スクリプト内で、$Timer.start() と書けば、Timer がスタートする。
- Timer の指定時間が経過すると、timeout() という信号が出るので、スクリプト内の関数と接続すれば、指定時間経過後にコレをしろ、といった処理が書ける。
- 独自の信号(signal)を作ることもできる。例えばスクリプトの最初のほうで、signal coinCollected と書けば、coinCollected という独自の信号を用意できる。
- emit_signal("coinCollected") と書けば、スクリプト内で、その信号を発生することができる。
独自の信号をどういう時に使うのかと言うと…。例えば、プレイヤーとコインが重なった際に、コイン側のスクリプト内で独自信号を出して、その独自信号をコイン数表示用Labelが受け取れば…。「プレイヤーとコインが重なった」ことを、コイン数表示用Labelが知ることができるので、コイン数表示用Labelが持ってるスクリプト内で、コインの獲得数を+1して表示を更新、といった処理が書けたりする。
- queue_free() で、自分自身を削除することができる。
◎ 課題。 :
あらかじめステージ内に、決まった数の敵だのコインだのを配置しておく系のゲームなら作れそう、とは分かったけれど…。
シューティングゲームのように、次々に弾を撃つ、みたいな処理はどうすればいいのやら。プレイヤーキャラが弾オブジェクトをバンバン発生させて、弾オブジェクトは自分で勝手に飛んでいって、条件を満たしたら自分で勝手に消えていく、みたいなことをしないといかんよな…。
3Dモデルを使ったシーンを表示する際、しばらく待たされるのも気になる。ストップウォッチで測ってみたら、15秒ぐらい待たされていた。ウインドウのタイトルバーに「(応答なし)」が出てくるぐらい無反応になるのは、ちょっと…。コレってどうにかならんのか。
シューティングゲームのように、次々に弾を撃つ、みたいな処理はどうすればいいのやら。プレイヤーキャラが弾オブジェクトをバンバン発生させて、弾オブジェクトは自分で勝手に飛んでいって、条件を満たしたら自分で勝手に消えていく、みたいなことをしないといかんよな…。
3Dモデルを使ったシーンを表示する際、しばらく待たされるのも気になる。ストップウォッチで測ってみたら、15秒ぐらい待たされていた。ウインドウのタイトルバーに「(応答なし)」が出てくるぐらい無反応になるのは、ちょっと…。コレってどうにかならんのか。
◎ 余談。 :
blender 2.8x で blenderゲームエンジンが削除された際、「そういうことをしたかったら Godot Engine でも使いなよ」と blenderのコミュニティ内で言及されてたので、なんとなく触ってみたのだけれど。
たしかに、作業用3D画面のカメラ操作は blender に近かったりするけれど、それ以外は、特に blender との親和性(?)があるようにも見えず。例えば、.blend が直接読める、といった機能があるわけでもないし…。
もっとも、ライセンス面では Unity や UE4 と比べるとかなり自由、てなあたりはメリットなのだろうか。
たしかに、作業用3D画面のカメラ操作は blender に近かったりするけれど、それ以外は、特に blender との親和性(?)があるようにも見えず。例えば、.blend が直接読める、といった機能があるわけでもないし…。
もっとも、ライセンス面では Unity や UE4 と比べるとかなり自由、てなあたりはメリットなのだろうか。
[ ツッコむ ]
#2 [movie] 「インデペンデンス・デイ: リサージェンス」を視聴
TV放映されたソレを録画してたので視聴。
前作と同様、なかなかのおバカ映画でイイ感じ、だったような気がする。とにかくスケールの大きい風景が目白押し。このシリーズは、こうじゃないと。
続編が作れそうな雰囲気で終わったけれど、ググってみたら興行成績がよろしくなかったそうで。どうやら続きは無さそうな気配。
前作と同様、なかなかのおバカ映画でイイ感じ、だったような気がする。とにかくスケールの大きい風景が目白押し。このシリーズは、こうじゃないと。
続編が作れそうな雰囲気で終わったけれど、ググってみたら興行成績がよろしくなかったそうで。どうやら続きは無さそうな気配。
[ ツッコむ ]
#3 [anime][neta] 柔らかい何かでパワードスーツを作れないかな
思考メモというか妄想メモ。
寝ていたら夢の中で、魔術師が液体を体にまとってパワードスーツっぽい状態にしている映像を見たわけで。
目が覚めてから、ちょっと妄想してしまったり。パワードスーツと言うと、大体は鉄っぽい硬い金属で覆われたソレをイメージするけど。何か柔らかいブツで覆うソレもアリだったりしないかなと。グミっぽいぶにょぶにょした素材で包むとか…。
例えばパラリンピックでは、バネっぽい義足が使われているけれど。着地の衝撃を、義足がしなることで和らげて、バネのように反発することで地面から足が離れる動作を手助けしてくれる。ああいった仕組みでパワードスーツを作れないものかと。硬さだけじゃなくて、柔らかさで動作を手助けしてくれる、みたいな。
自転車や車のタイヤは、中に空気が入っていて、段差の上を走った時の衝撃を減らしてくれるけれど。パワードスーツも、足全体をグミみたいな素材でぐるりと包めば、ぶよんぶよんと歩行できて楽に…なるかどうかは分からんけど、衝撃は減らせそう。
でも、マシュマロマンみたいなパワードスーツになりそうだな…。
考えてみたら、先日放送が終わったTVアニメ「ダーウィンズゲーム」に、似たようなパワードスーツが出てきたような。アレは体全体を木の根っこで覆っていたけど、つまりは「金属製じゃないパワードスーツ」の設定は既存作品内で存在してる、と言えるのだろうなと。もっとも、「ダーウィンズゲーム」のソレは、植物って実は金属並みに硬いのだ、てな主張をしていた設定だった気もするけど。
例えば、竹で覆って、竹のしなり具合で衝撃を吸収する、てな設定もアリなのかな…。まあ、竹製パワードスーツ、というキーワードだけでも「なんじゃそりゃ」感が出てきそうだけど。
戦国時代を舞台にして、木と竹と布でできたパワードスーツが活躍、とかどうだろう。まあ、既にそういう設定の作品はありそうだけど。それっぽいネーミングが欲しくなるだろうな。例えば、伊賀甲冑とか、甲賀甲冑とか。発明した場所の地名がついた状態で呼ばれたりとか。
寝ていたら夢の中で、魔術師が液体を体にまとってパワードスーツっぽい状態にしている映像を見たわけで。
目が覚めてから、ちょっと妄想してしまったり。パワードスーツと言うと、大体は鉄っぽい硬い金属で覆われたソレをイメージするけど。何か柔らかいブツで覆うソレもアリだったりしないかなと。グミっぽいぶにょぶにょした素材で包むとか…。
例えばパラリンピックでは、バネっぽい義足が使われているけれど。着地の衝撃を、義足がしなることで和らげて、バネのように反発することで地面から足が離れる動作を手助けしてくれる。ああいった仕組みでパワードスーツを作れないものかと。硬さだけじゃなくて、柔らかさで動作を手助けしてくれる、みたいな。
自転車や車のタイヤは、中に空気が入っていて、段差の上を走った時の衝撃を減らしてくれるけれど。パワードスーツも、足全体をグミみたいな素材でぐるりと包めば、ぶよんぶよんと歩行できて楽に…なるかどうかは分からんけど、衝撃は減らせそう。
でも、マシュマロマンみたいなパワードスーツになりそうだな…。
考えてみたら、先日放送が終わったTVアニメ「ダーウィンズゲーム」に、似たようなパワードスーツが出てきたような。アレは体全体を木の根っこで覆っていたけど、つまりは「金属製じゃないパワードスーツ」の設定は既存作品内で存在してる、と言えるのだろうなと。もっとも、「ダーウィンズゲーム」のソレは、植物って実は金属並みに硬いのだ、てな主張をしていた設定だった気もするけど。
例えば、竹で覆って、竹のしなり具合で衝撃を吸収する、てな設定もアリなのかな…。まあ、竹製パワードスーツ、というキーワードだけでも「なんじゃそりゃ」感が出てきそうだけど。
戦国時代を舞台にして、木と竹と布でできたパワードスーツが活躍、とかどうだろう。まあ、既にそういう設定の作品はありそうだけど。それっぽいネーミングが欲しくなるだろうな。例えば、伊賀甲冑とか、甲賀甲冑とか。発明した場所の地名がついた状態で呼ばれたりとか。
[ ツッコむ ]
以上、1 日分です。