[過去ログ] 【ゲームエンジン】Unity初心者質問スレBuild2 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
869(1): 名前は開発中のものです。 [sage] 2020/01/01(水) 22:15:05.52 ID:e+07kdzD(1) AAS
>>864864(2): 名前は開発中のものです。 [sage] 2020/01/01(水) 12:22:19.23 ID:cBmOpE+o(6/6) AAS
ざっとネットをあさっても、やはり Raycast は Update に書いて着地判定するとかあるけど、
同じスクリプトで 60fps、20fps で Update で着地判定したらバグるよね? 物理演算は 50fps 固定と想定して。
上からモノ(オブジェクト)が落下してきてるけど、着地(衝突)判定が 20fps なら、着地判定が間に合わなくて、
地面をすり抜けるバグがある。
※アセットとキャラコントローラは使用しない方針
この辺が納得出来ないのは、まだ自分の理解が足りていないからだろうな。
たったあれだけの俺のレスでそこまで気づけたのはすごいね
物理挙動がシビアなものを扱うときは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
それアタッチじゃなくて参照じゃね?
ゲーム立ち上げてメモリーマネージャーとかで見ればよくね?
883(4): 名前は開発中のものです。 [sage] 2020/01/04(土) 17:59:07.23 ID:XO34IPeI(1/3) AAS
質問させて下さい。
update内で
if(enemy.hp == 0)
を条件にエネミーオブジェクトをデストロイして新しいエネミープレファブを生成する処理を書いたとすると、新しいエネミーが出現するまでの間コンソールにenemyがありません的な警告が出続けてしまいます。
この警告は無視しても良いのでしょうか?
それともhp == 0という条件を辞めて他の関数でhpが0になったらenemyAlive = falseなどのフラグをたてて管理すれば良いのでしょうか?
もっと良い方法もあるのでしょうか?
初歩的すぎる質問だと思いますが先輩方の知恵をお貸し頂きたいです。
よろしくお願いいたします。
884: 名前は開発中のものです。 [sage] 2020/01/04(土) 17:59:19.32 ID:kov3mgdb(1) AAS
珍しくまともに質問スレしてるな
3年ぶりくらいか?
885: 883 [sage] 2020/01/04(土) 18:02:59.33 ID:XO34IPeI(2/3) AAS
書き忘れてしまいました。
作っているのはRPGの様なバトル画面でプレイヤーとエネミーの攻撃力を交互にHPから引くという動作をさせている物です。
今は1vs1で雛形作っていますが、完成後には敵を複数出現させたいと思っています。
886(1): 名前は開発中のものです。 [sage] 2020/01/04(土) 18:59:09.06 ID:kNbEhA8/(1) AAS
>>883
無視しても影響は無いと思うけど、警告は意図しない使われ方だから出てるわけで、出来ればステータス管理用のクラスを別で作ってそれを持たせておいた方がいいね
887(1): 名前は開発中のものです。 [sage] 2020/01/04(土) 19:30:16.09 ID:yESk8dXK(1/2) AAS
>>883
ありません的なじゃなくて正確な警告文書こうや
888: 名前は開発中のものです。 [sage] 2020/01/04(土) 19:39:48.33 ID:XO34IPeI(3/3) AAS
>>886
回答ありがとうございます!
同じスクリプト内でいろいろ処理してしまってるので管理クラスを別にする方法もためしてみます!
>>887
本当にその通りだと思います、申し訳ありません、、
色々試行錯誤して警告が出なくなってから、もっと良い方法があったのかな?と書き込みしてしまったので警告内容がわかりませんでした。
(nullの文字があった事だけ覚えていたので曖昧な表現になってしまいました)
今後は気をつけます!
ありがとうございました!
889: 名前は開発中のものです。 [sage] 2020/01/04(土) 21:24:53.94 ID:2v8PE2Fo(1) AAS
>>883
if(enemy != null)
とかで、エネミーが存在するときだけ処理すればいい
890(1): 名前は開発中のものです。 [sage] 2020/01/04(土) 21:33:48.90 ID:hGDO8YfT(1/2) AAS
if文は重いので可能な限り減らしましょう
最初のenemyが出てから呼ぶようにしましょう
891: 名前は開発中のものです。 [] 2020/01/04(土) 21:55:45.93 ID:6CzwS6io(2/4) AAS
まぁぃまのパソコンやスマホでifの分岐なんかどうでもいい処理
gameobject.find ですら問題ない
結論、気にするな
892: 名前は開発中のものです。 [sage] 2020/01/04(土) 22:00:43.39 ID:hGDO8YfT(2/2) AAS
updateで毎フレーム呼ぶなんて論外ですよ
893: 名前は開発中のものです。 [sage] 2020/01/04(土) 22:51:48.38 ID:yESk8dXK(2/2) AAS
>>890
それ最初のが出てから、をどうやるの
上下前次1-新書関写板覧索設栞歴
あと 109 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.018s