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

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
876
(1): 名前は開発中のものです。 [sage] 2020/01/03(金) 13:27:05.58 ID:SKNp78X0(1) AAS
>>874
874(1): 名前は開発中のものです。 [sage] 2020/01/03(金) 12:26:28.20 ID:MQKQya2C(1/4) AAS
>>869
アドバイスありがとう。
おかげでスクリプト改善して、致命的な個所は大体追い込めた。

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

水面の判定はコライダーで出来たけど、水中の判定で良い方法はないかと悩んでた。
ざっくり思いついたのは、プレイヤーが上に Ray を投げて水面があり、かつ水面より自分が低ければ水中みたいな。
水面って水平じゃないの?
水平なら単純に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
それ最初のが出てから、をどうやるの
894: 弟子 [] 2020/01/04(土) 23:26:41.70 ID:6CzwS6io(3/4) AAS
もっと良い処理は所謂オブジェクト思考
enemyさんのhpを減らしてる処理がどこかに在るわけさ、それはenemyさん自信が持ってる可能性あるので、そこで0になったら次のenemyさんを生成してあげるように管理者へ働きかければいいのさ

攻撃あたる→ダメージ分だけhp減らす
ってやってるはずだお
895: 弟子 [] 2020/01/04(土) 23:30:14.89 ID:6CzwS6io(4/4) AAS
一応公式のupdate のサンプル貼っとくよ
外部リンク[html]:docs.unity3d.com

あれif 分使ってるわ
896
(1): ダーク王鍬大使 ◆SoVpkB15jY [sage] 2020/01/05(日) 01:34:50.36 ID:arSAPuKi(1) AAS
質問チンコ(^^
ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
と言われるのでふが(^^
御覧の通り特にマイナスは使ってないんでふよ(^^
Debug.Log("1枚目のシートの1番目 name=" + mobList.sheets[1].list[10].威力);
原因分かりまんこ?(^^
ちなみにテラシュールさんのスクリプト使ってまふ(^^
897: 名前は開発中のものです。 [sage] 2020/01/05(日) 08:53:30.62 ID:ks/IWdWO(1) AAS
>>896
単純に配列のサイズより添字の方が大きいだけ
898
(1): 名前は開発中のものです。 [sage] 2020/01/05(日) 09:44:12.13 ID:bo4vBboO(1/6) AAS
3Dアクションゲームの水の面を実装中。
開発機 Windows 10 にてPostProcessで水中のブラー表現とかして、良い感じと思ってたが、
デプロイ先 Android 10 でFPSが激落ち。水中で0.7fpsっておい。
また、水面を実装したとたんに、処理落ちで平均20fpsとかになってしまった。

水面はスタンダードアセットの "Water" だけど、そんなに処理食うものなの?

あと、モバイルではPostProcessは無理っぽい感じかな?
なんか昔の記事ではImageEffectとかあったらしいけど今のUnityにはない?

水面・水中実装は必須なので、なんとか処理負荷軽減しなくては。
899: 名前は開発中のものです。 [sage] 2020/01/05(日) 12:25:38.99 ID:TFbbbwof(1) AAS
>>898
いいアセットがありますから、ぜひ買ってください
900: 名前は開発中のものです。 [sage] 2020/01/05(日) 12:45:02.02 ID:bo4vBboO(2/6) AAS
"Water" は設定を見直したら処理負荷が少なくなったので、おそらく問題ない。
問題は、PostProcess で、コレを切ったら、モバイルでFPSが激上がる。

動作リファレンスは Android 9 (Android One S3) ※上では書き間違えた
この機種は、ゲームするには低スペックなので、コレでサクサク動けば問題ないかなと。
もっと言えば、最近の RAM 3GB 程度の Android TV で30fpsで動くことが目標。

PostProcess モバイルでは全然使えんね。ただ画面に水中にいるように、
青緑のフィルターかけたいだけなのに…
1-
あと 102 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.026s