[過去ログ] 【ゲームエンジン】Unity初心者質問スレBuild2 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
858
(1): 名前は開発中のものです。 [sage] 2020/01/01(水) 02:48:39.67 ID:Kx2wbxr1(2/2) AAS
>>857
857(1): 名前は開発中のものです。 [sage] 2020/01/01(水) 01:23:21.99 ID:cBmOpE+o(2/6) AAS
>> 856
自分は Unity は初学者だけど、Unity の作法通り、FixedUpdate() で Rigidbody に対して処理書いてオブジェクトの動作させてる。
それでも、fps が変化すると、壁を上りきる時とかハシゴを降りる時とか、Ray 処理の微妙な判定で細かい動作バグが出てる現状…
※オブジェクトの動作は全て自前実装。

ゲームパッドのキー入力は Update() で取ってるけどね。
通常のupdate(描画)のフレームレートはいくら下げてもいいけど、fixed updateのフレームをさげちゃダメだよ
859
(1): 名前は開発中のものです。 [sage] 2020/01/01(水) 10:35:52.59 ID:p4TYEv+8(1) AAS
InputSystemとMRTKのイベント周りは同じ思想になってる?InputSystemよく知らんのでわからんけど
860: 名前は開発中のものです。 [sage] 2020/01/01(水) 11:09:32.19 ID:cBmOpE+o(3/6) AAS
>>858
アドバイスありがとう、FPSは自前で計測するコード書いて表示させてたけど、
FixedUpdate のFPSを確認する発想はなかった。

ゲームのFPSは、設定で vSync を無効にして、コードで Application.targetFrameRate = 20;
とか設定して 20fps にしてた。

で、FixedUpdate のFPSも計測するコード書いて確認したら、50fpsだった。
あれ? FixedUpdate って 50fps なの?って思って調べたら、設定の固定タイムステップが
0.02 になってたんで、0.0167 にしたら、FixedUpdate のFPSも 60fps になってなるほどと思った。

あと、1GB RAM の非力な Android 5 タブレットでも、固定タイムステップ:0.02 で
FixedUpdate 50fps 出てたので、演算は出来てんだと思い、表示が間に合わないのかと推測した。

>>859
ごめん、MRTKのイベントという言葉自体が分からないので調べるわ。
861: 名前は開発中のものです。 [sage] 2020/01/01(水) 11:18:18.28 ID:ya7ysYpY(1) AAS
2018くらいからデフォルトが0.0167になったはず
862: 名前は開発中のものです。 [sage] 2020/01/01(水) 11:40:01.82 ID:cBmOpE+o(4/6) AAS
fpsを変えると細かいバグが出る件は、Ray 判定の処理を Update から呼んじゃってるからだと気づいた。
物理処理が一定なのに、Ray 判定を 60fps で呼んだり 20fps で呼んだりしたらそりゃ豪快にバグるわな。

プレイヤーがブロックにめり込んだり、地形に埋まったりする。

でもここの処理を弄るのは、コードの根幹部分からの大改修でへこむは…

あとMRTKは複雑で今の自分には必要ないかな。
863: 名前は開発中のものです。 [sage] 2020/01/01(水) 11:47:41.22 ID:cBmOpE+o(5/6) AAS
Unity でのゲーム開発において、Update でやるべきこと・やってはいけないこと、
FixedUpdate でやるべきこと・やってはいけないことを、本質から丁寧に解説してる参考サイトは
本当に少なくて、なおかつ自分のような初心者がテキトーにコードかいても、
ゲームとしてそれなりに動くから後で困る…
864
(2): 名前は開発中のものです。 [sage] 2020/01/01(水) 12:22:19.23 ID:cBmOpE+o(6/6) AAS
ざっとネットをあさっても、やはり Raycast は Update に書いて着地判定するとかあるけど、
同じスクリプトで 60fps、20fps で Update で着地判定したらバグるよね? 物理演算は 50fps 固定と想定して。

上からモノ(オブジェクト)が落下してきてるけど、着地(衝突)判定が 20fps なら、着地判定が間に合わなくて、
地面をすり抜けるバグがある。

※アセットとキャラコントローラは使用しない方針

この辺が納得出来ないのは、まだ自分の理解が足りていないからだろうな。
865: 【だん吉】 【194円】 [!omikuji!dama] 2020/01/01(水) 13:18:50.68 ID:R9RtkJsN(1) AAS
あと百ちよい
完走がんば
866: 名前は開発中のものです。 [sage] 2020/01/01(水) 13:28:22.32 ID:BX/jaV5P(1) AAS
>>864
アセットを買いましょう
時間の無駄です
867: 名前は開発中のものです。 [sage] 2020/01/01(水) 15:36:56.99 ID:7Vde49Ia(1) AAS
アセットおじさんをこのスレからDestroyするアセットが欲しい
868: 名前は開発中のものです。 [sage] 2020/01/01(水) 16:08:02.37 ID:Ntemfi/A(1) AAS
DestroyImmediate(キチガイ.アセットおじさん);
869
(1): 名前は開発中のものです。 [sage] 2020/01/01(水) 22:15:05.52 ID:e+07kdzD(1) AAS
>>864
たったあれだけの俺のレスでそこまで気づけたのはすごいね
物理挙動がシビアなものを扱うときはfixed updateで、そうじゃなければupdateでいいよ
870: 名前は開発中のものです。 [sage] 2020/01/02(木) 18:59:32.06 ID:x3JqZiKy(1) AAS
明けましておめでとうございます!
今年も頑張ってアセット購入しましょう!
871
(2): 名前は開発中のものです。 [sage] 2020/01/03(金) 02:22:15.17 ID:uin/GZHr(1/2) AAS
Invokeで遅延かけてAudioSourse.PlayOnShot呼びたくて色々調べてたんだけどやっぱりどうしようもない?
コルーチン定義すると散らかって悔しいというだけの理由ではあるんだけど
872
(1): 名前は開発中のものです。 [sage] 2020/01/03(金) 02:56:56.21 ID:no3xsoMJ(1) AAS
>>871
汎用コルーチン作ってAction使って呼び出せば散らからない
873: 名前は開発中のものです。 [sage] 2020/01/03(金) 09:11:45.49 ID:+tiiP7aR(1) AAS
>>871
アセットを購入してみては?
874
(1): 名前は開発中のものです。 [sage] 2020/01/03(金) 12:26:28.20 ID:MQKQya2C(1/4) AAS
>>869
アドバイスありがとう。
おかげでスクリプト改善して、致命的な個所は大体追い込めた。

今、3Dアクションゲームの水の面を作ってるんだけど、水中を判定する上手い方法はないかな?
複雑にしたくないので、水面オブジェクトはスタンダードアセットの "Water" で進めてる。

水面の判定はコライダーで出来たけど、水中の判定で良い方法はないかと悩んでた。
ざっくり思いついたのは、プレイヤーが上に Ray を投げて水面があり、かつ水面より自分が低ければ水中みたいな。
875: 名前は開発中のものです。 [sage] 2020/01/03(金) 12:33:18.47 ID:uin/GZHr(2/2) AAS
>>872
一応それがあるのかありがとう
結局コルーチンになりました
876
(1): 名前は開発中のものです。 [sage] 2020/01/03(金) 13:27:05.58 ID:SKNp78X0(1) AAS
>>874
水面って水平じゃないの?
水平なら単純にtransform.position.yでやる
877: 名前は開発中のものです。 [sage] 2020/01/03(金) 13:32:48.28 ID:MQKQya2C(2/4) AAS
>>876
なるほど、とてもシンプルな解決策だと思う。
ありがとう自分では思いつかなかった。
Raycast で想定通り出来なくて困ってたとこだった。
本当にサンキュー
878
(1): 名前は開発中のものです。 [sage] 2020/01/03(金) 21:49:56.16 ID:MQKQya2C(3/4) AAS
おかげで良い感じに水中の挙動実装中だけど、
泳ぐアニメーションを適用したら、泳いでる時、プレイヤーがブロックや壁にめり込むようになった。
確認すると、アニメで3Dモデルは前傾してるのに、カプセルコライダーは立ってる時のままの位置だった。

これは、アニメで3Dモデルが傾いたら、カプセルコライダーも自前で傾ける感じ?
そもそもカプセルコライダーで衝突判定してるのが間違い?
でも、もういろいろ調整して面倒くさいので出来れば、プレイヤーモデルのコライダーの種類は変えたくないなあ。
879
(1): 名前は開発中のものです。 [sage] 2020/01/03(金) 21:53:27.57 ID:4PHsCaGr(1) AAS
>>878
腰ノードにカプセルコライダー付ければいいんでない?
880: 名前は開発中のものです。 [sage] 2020/01/03(金) 22:34:44.77 ID:MQKQya2C(4/4) AAS
>>879
なるほど、3Dモデルは腰では分けてなかったので、体ノードにカプセルコライダーつけたら、水中の前傾でのめり込みが解消した。
でも、もともとの歩く時も傾斜しないカプセルコライダー基準で、オブジェクトを掴む判定や、上る・下りる判定をしてたので、
地上と水中でカプセルコライダーを切り替えることが必要かな。

ありがとう。自分では気づけない発想で本当に勉強になって助かる。
881: 名前は開発中のものです。 [sage] 2020/01/04(土) 03:22:30.69 ID:kwztwMX9(1) AAS
前々からちょっと気になってたので質問させてください。
オブジェクトAのクラスAにpublic GameObject objB
としてオブジェクトBをインスペクタ上からクラスAにアタッチした場合って
メモリの使用はBは参照してるって認識でいいんでしょうか?

例えばオブジェクトBのデータ量が100MBあったとして、
Aにアタッチしたらゲーム内で200MB使用してることにならないのかって意味です。
882: 名前は開発中のものです。 [] 2020/01/04(土) 06:09:49.67 ID:6CzwS6io(1/4) AAS
それアタッチじゃなくて参照じゃね?
ゲーム立ち上げてメモリーマネージャーとかで見ればよくね?
1-
あと 120 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.024s