[過去ログ] 【軽量】godot engine - part2 (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
411(1): 名前は開発中のものです。 [sage] 2023/08/01(火) 17:37:35.95 ID:s9Z/hLC5(1/2) AAS
>>403403(1): 名前は開発中のものです。 [sage] 2023/07/30(日) 20:28:54.78 ID:iZ/qN6Rm(2/2) AAS
>>401
Vector2.UPはVector2(0,-1)と同じ、要は画面の↑方向を差すベクトル
他にもVector2.ZERO、Vector2.ONE、Vector2.LEFT、Vector2.RIGHT、Vector2.DOWNがある
rotated()は回転させたVector2を返すメソッド
Vector2.UP.rotated(3.14)は↑方向のベクトルを180度回転させたベクトルになるので、Vector2(0,1)が返ってくる
var velocity = Vector2.UP.rotated(rotation) * speed
の行は、Vector2.UPを基準に、rotation分回転させてspeed分移動するためのベクトルをvelocityに計算してる
Node2Dクラスが持ってるpositionプロパティにVector2を渡せばその座標に移動出来るので、
今の座標にvelocityを足す事で円を描くように移動させられる
deltaは_process()が呼ばれる時に内部で渡されるフレーム間合計時間
_process()は1秒のうちに何回も呼ばれるメソッドなのでdeltaを掛けることで1秒間の移動量を調整してる
こんな感じ?
日本語ドキュメントは3.xですら中途半端だしdeeplでも使って根気よく翻訳するしかないな
>>405405(1): 名前は開発中のものです。 [sage] 2023/07/31(月) 09:18:39.65 ID:PdSwL1C1(1) AAS
>>401
サンプルの "rotation += angular_speed * delta" のコードが
rotationプロパティを通して角速度angular_speedでキャラを回転させ続けて、
変数velocityは上向きベクトルをrotationの向きに回転させ、速度speed分進む方向ベクトルなので
組み合わさるとキャラが角速度angular_speedで向きを回転しながら速度speedで前に進むことになり
その姿を想像してみるとたぶん円軌道になるのかなあと
スイカ割りで目隠ししてぐるぐる回されたあとに進むと真っ直ぐ進んでるように思ってもくるくる回るみたいな…
丁寧な解説ありがとうございます。
解説と照らし合わせながら週末唸りながら朧気ながらに理解していったのが
下記の通りで、間違っているかもしれません。
ソースの全体を貼って無かったので
外部リンク[html]:docs.godotengine.org
先ず謎なのが、
delta の機能で、ヘルプには「最後のフレームからの経過時間」とあるけれどどゆこと?
類推するに、60fpsで動いてる場合0.0166666を返すって事でいいんかな?
func _process(delta):
は毎フレーム実行される処理「常に実行」という関数って事でいい?
こういう所ヘルプが足りてない気がする。
それともプログラミングする上での常識?だとしたらごめんなさい。
最低限プログラミングの素養が無いとgodot触れないなら諦めます。
次に、
var angular_speed = PI
何でこの変数がPI(3.14)必要なのか?
rotation に入れる値って角度じゃないっぽい・・・と、調べてみると
コードから指定する rotation はラジアン値なんやね。
存在は知っていたけど調べてみたら何とも扱いが面倒な単位・・・
なんでや・・・プロパティでは角度で入れるのにコードから入れる時は
ラジアン値とか混乱するやろっ!
という事でラジアン値とPIを色々調べて相互変換式を見比べて何故PIを
変数に入れたのか、何で
rotation += angular_speed * delta
の式で2フレームで画像が360度(2PI)回るのかが理解できました。
うん中学の頃の授業でやったやった・・・。
414(1): 名前は開発中のものです。 [sage] 2023/08/02(水) 02:24:09.38 ID:mr3zSq9+(1) AAS
>>411
>60fpsで動いてる場合0.0166666を返すって事でいいんかな?
これは大体あってる。処理が重けりゃfps不安定になるからdeltaも乱高下する
>毎フレーム実行される処理「常に実行」という関数って事でいい?
合ってる。詳しい事はgodot processとかでググればドキュメント出てくるはず
chromeなら右クリ、スマホなら︙から翻訳出来るから英語ページも漁ってみ
因みにupdate関数の概念はUnityとかにも通ずるから基本と言えば基本
πの概念もゲームだとよく出る
座標系、ベクトル、三角関数は避けられない
因みにgodotだとdeg2rad(角度)で弧度に変換出来てrad2deg(弧度)で度数に変換できるよ
>何で * speed したら「その方向にspeed分移動」になるのか理解できない。
要はposition += Vector2.UPとした所でpositionの位置から(0,1)ずつジワジワ動くだけなので、position += Vector2.UP*speedにして沢山動かそうってだけ
矢印で考えたら、掛けた分矢印の長さが倍になるイメージ
(0, 1)*100 = (0*100, 1*100) = (0, 100)ってだけなんだけど、まぁ色々試すなり一旦チュートリアル進るなり場数踏めば意味も理解出来るんじゃね
>この考え方だと180度(下向き)になるのでは?
意味を掬い取れてるか分からんが…考え方は合ってる
もし12時の位置から同じ方法で円を描けば、180°の頃には6時の位置で左向きになる
サンプルでは0°が上向きで9時の位置だから180°の時には下向きで3時の位置になってるけど
ドキュメント周りはまだ発展途上なツールだし多めに見よう
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 1.846s*