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

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
841
(1): 2019/12/31(火)09:24 ID:Y8q/9GVB(2/10) AAS
今、InputManager にかわる新しい入力システム InputSystem が出てたことを知った。
キーパッド入力部分のソースコード全部書き直せってか。
ぐぬぬ
842: 2019/12/31(火)10:07 ID:D9jsx8E3(1) AAS
>>835
シーンに何も置いてない状態で起こるならエディタ側の問題
空のシーンだと正常に動くならライトやらスクリプトやらが悪さしてる
843
(1): 2019/12/31(火)12:42 ID:CcuSFy9r(1) AAS
>>841
大改修になるけど、今までキー入力のバッファリングが無くて不便だったのがやっと解決されるからアクションゲームとか作ってるなら乗り換えた方がいいよ
844: 2019/12/31(火)15:12 ID:5UwvHbim(2/2) AAS
Input Systemのドキュメント読んで来た
Xbox, PS4, Switchのコントローラーは公式対応で、
その他は汎用HIDを識別とあるがやっぱり自前のマッピングが必要っぽい
未知のコントローラーを検出したらジョイスティックを順番にぐりぐりさせて識別するオートコンフィグさえ実装したら実用レベルだな
845: 2019/12/31(火)15:17 ID:Oh+ty5S6(1) AAS
やはりアセットの方が楽そうだね。
500円とかなら間違いなく買うw
846: 2019/12/31(火)18:06 ID:Y8q/9GVB(3/10) AAS
>>843 ありがとう、さっそく InputManager から InputSystem に換装してみた。

ゲームパッドは 8Bitdo N30 Pro 2 で検証。

【結果】
// Dpad:十字キー
Gamepad.current.dpad.up.isPressed
Gamepad.current.dpad.down.isPressed
Gamepad.current.dpad.left.isPressed
省17
847: 2019/12/31(火)18:06 ID:Y8q/9GVB(4/10) AAS
【状況】
十字キーは XInput と DirectInput のコンパチが実装出来た。
ボタンは XInput では XBOXコンのボタン配置で取れた…
DirectInput では N30 Pro 2 の表記の任天堂配置で取れた。

InputSystem の XInput でも任天堂のボタン配置で取りたい。
どうにか出来ないものかな?

L、Rはまだ試していない。
848
(1): 2019/12/31(火)20:58 ID:p26duGZu(1) AAS
みんなアセットを買って解決してるよ
849: 2019/12/31(火)21:17 ID:Y8q/9GVB(5/10) AAS
>>848 申し訳ない、今回はアセットを購入しない方針で問題を解決したいんだ。
850: 2019/12/31(火)21:59 ID:Y8q/9GVB(6/10) AAS
※L、R は XInput と DirectInput のコンパチが実現してた。
Gamepad.current.leftShoulder.isPressed
Gamepad.current.leftTrigger.isPressed
Gamepad.current.rightShoulder.isPressed
Gamepad.current.rightTrigger.isPressed
⇒ XInput、DirectInput とも
 leftShoulder → L1ボタン
省7
851
(1): 2019/12/31(火)22:12 ID:Y8q/9GVB(7/10) AAS
InputSystem 良いね。でも、Unityの初心者向けサイトはまだ InputManager 使うやり方で
説明されてるので、これから Unity 始める人は InputSystem が使いやすいと思う。

さあ、ひとまず開発環境でのゲームパッド問題は解決した。教えてくれた人ありがとう。

次はフレームレートの問題だな。開発機の Windows 10 では普通に 60fpsで開発してたんだけど、
Android 9 の実機では 60fps では厳しくて、30fps にしようと思ったが、さらに古い Android 5 で
動かしたら、20fps 程度じゃないと安定しなかった。

作ってるのは、64マリオみたいな3Dアクションだけど、判定に Ray 投げまくりなので、
省1
852: 2019/12/31(火)23:02 ID:Y8q/9GVB(8/10) AAS
あと ゲームパッドの振動だ。
XInput と DirectInput のコンパチでゲームパッドを振動させる方法があるのかな?
853: 2019/12/31(火)23:50 ID:Y8q/9GVB(9/10) AAS
というか、InputSystem なら
Gamepad.current.SetMotorSpeeds(1f, 1f);
とかで、開発環境 Windows 10 で XInputモードの 8Bitdo N30 Pro 2 は振動した。
InputSystem やるじゃん! 公式にゲームパッドの振動に対応したんだと思ったが、
デプロイ先 Android 9 で DirectInputモードの 8Bitdo N30 Pro 2 は振動しなかった…

Windows 版は振動対応だけど、Android 版は振動未対応って、ぐぬぬ
854: 2019/12/31(火)23:55 ID:Y8q/9GVB(10/10) AAS
いや、8Bitdo N30 Pro 2 自体が、DirectInputモードでは振動未対応って可能性もあるね。
誰か、InputSystem の SetMotorSpeeds で、DirectInputモードのゲームパッドを振動させることに
成功したら、教えてくだせえ。

振動ありとなしでは、ゲームの面白さが段違いだよ…
855: 2020/01/01(水)00:35 ID:cBmOpE+o(1/6) AAS
というか公式に振動の解説あったわ。
外部リンク[html]:docs.unity3d.com
> PS4, Xbox, and Switch controllers, when connected to their respective consoles.
> Only supported if you install console-specific input packages in your Project.
> PS4 controllers, when connected to Mac or Windows/UWP computers.
> Xbox controllers on Windows.

InputSystem の Rumble が Android に対応していない…
856: 2020/01/01(水)01:00 ID:Kx2wbxr1(1/2) AAS
>>851
そういうときのfixed updateだよ!
そしてそこでinput systemが活きてくる!
857
(1): 2020/01/01(水)01:23 ID:cBmOpE+o(2/6) AAS
>> 856
自分は Unity は初学者だけど、Unity の作法通り、FixedUpdate() で Rigidbody に対して処理書いてオブジェクトの動作させてる。
それでも、fps が変化すると、壁を上りきる時とかハシゴを降りる時とか、Ray 処理の微妙な判定で細かい動作バグが出てる現状…
※オブジェクトの動作は全て自前実装。

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

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

で、FixedUpdate のFPSも計測するコード書いて確認したら、50fpsだった。
あれ? FixedUpdate って 50fps なの?って思って調べたら、設定の固定タイムステップが
省5
861: 2020/01/01(水)11:18 ID:ya7ysYpY(1) AAS
2018くらいからデフォルトが0.0167になったはず
862: 2020/01/01(水)11:40 ID:cBmOpE+o(4/6) AAS
fpsを変えると細かいバグが出る件は、Ray 判定の処理を Update から呼んじゃってるからだと気づいた。
物理処理が一定なのに、Ray 判定を 60fps で呼んだり 20fps で呼んだりしたらそりゃ豪快にバグるわな。

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

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

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

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

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

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

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

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

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

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

例えばオブジェクトBのデータ量が100MBあったとして、
Aにアタッチしたらゲーム内で200MB使用してることにならないのかって意味です。
882: 2020/01/04(土)06:09 ID:6CzwS6io(1/4) AAS
それアタッチじゃなくて参照じゃね?
ゲーム立ち上げてメモリーマネージャーとかで見ればよくね?
883
(4): 2020/01/04(土)17:59 ID:XO34IPeI(1/3) AAS
質問させて下さい。

update内で
if(enemy.hp == 0)
を条件にエネミーオブジェクトをデストロイして新しいエネミープレファブを生成する処理を書いたとすると、新しいエネミーが出現するまでの間コンソールにenemyがありません的な警告が出続けてしまいます。

この警告は無視しても良いのでしょうか?
それともhp == 0という条件を辞めて他の関数でhpが0になったらenemyAlive = falseなどのフラグをたてて管理すれば良いのでしょうか?

もっと良い方法もあるのでしょうか?
省2
884: 2020/01/04(土)17:59 ID:kov3mgdb(1) AAS
珍しくまともに質問スレしてるな
3年ぶりくらいか?
885: 883 2020/01/04(土)18:02 ID:XO34IPeI(2/3) AAS
書き忘れてしまいました。
作っているのはRPGの様なバトル画面でプレイヤーとエネミーの攻撃力を交互にHPから引くという動作をさせている物です。
今は1vs1で雛形作っていますが、完成後には敵を複数出現させたいと思っています。
886
(1): 2020/01/04(土)18:59 ID:kNbEhA8/(1) AAS
>>883
無視しても影響は無いと思うけど、警告は意図しない使われ方だから出てるわけで、出来ればステータス管理用のクラスを別で作ってそれを持たせておいた方がいいね
887
(1): 2020/01/04(土)19:30 ID:yESk8dXK(1/2) AAS
>>883
ありません的なじゃなくて正確な警告文書こうや
888: 2020/01/04(土)19:39 ID:XO34IPeI(3/3) AAS
>>886
回答ありがとうございます!
同じスクリプト内でいろいろ処理してしまってるので管理クラスを別にする方法もためしてみます!

>>887
本当にその通りだと思います、申し訳ありません、、
色々試行錯誤して警告が出なくなってから、もっと良い方法があったのかな?と書き込みしてしまったので警告内容がわかりませんでした。
(nullの文字があった事だけ覚えていたので曖昧な表現になってしまいました)
省2
889: 2020/01/04(土)21:24 ID:2v8PE2Fo(1) AAS
>>883
if(enemy != null)
とかで、エネミーが存在するときだけ処理すればいい
890
(1): 2020/01/04(土)21:33 ID:hGDO8YfT(1/2) AAS
if文は重いので可能な限り減らしましょう
最初のenemyが出てから呼ぶようにしましょう
891: 2020/01/04(土)21:55 ID:6CzwS6io(2/4) AAS
まぁぃまのパソコンやスマホでifの分岐なんかどうでもいい処理
gameobject.find ですら問題ない
結論、気にするな
892: 2020/01/04(土)22:00 ID:hGDO8YfT(2/2) AAS
updateで毎フレーム呼ぶなんて論外ですよ
893: 2020/01/04(土)22:51 ID:yESk8dXK(2/2) AAS
>>890
それ最初のが出てから、をどうやるの
894: 弟子 2020/01/04(土)23:26 ID:6CzwS6io(3/4) AAS
もっと良い処理は所謂オブジェクト思考
enemyさんのhpを減らしてる処理がどこかに在るわけさ、それはenemyさん自信が持ってる可能性あるので、そこで0になったら次のenemyさんを生成してあげるように管理者へ働きかければいいのさ

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

あれif 分使ってるわ
896
(1): ダーク王鍬大使 ◆SoVpkB15jY 2020/01/05(日)01:34 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].威力);
原因分かりまんこ?(^^
省1
897: 2020/01/05(日)08:53 ID:ks/IWdWO(1) AAS
>>896
単純に配列のサイズより添字の方が大きいだけ
898
(1): 2020/01/05(日)09:44 ID:bo4vBboO(1/6) AAS
3Dアクションゲームの水の面を実装中。
開発機 Windows 10 にてPostProcessで水中のブラー表現とかして、良い感じと思ってたが、
デプロイ先 Android 10 でFPSが激落ち。水中で0.7fpsっておい。
また、水面を実装したとたんに、処理落ちで平均20fpsとかになってしまった。

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

あと、モバイルではPostProcessは無理っぽい感じかな?
なんか昔の記事ではImageEffectとかあったらしいけど今のUnityにはない?
省1
899: 2020/01/05(日)12:25 ID:TFbbbwof(1) AAS
>>898
いいアセットがありますから、ぜひ買ってください
900: 2020/01/05(日)12:45 ID:bo4vBboO(2/6) AAS
"Water" は設定を見直したら処理負荷が少なくなったので、おそらく問題ない。
問題は、PostProcess で、コレを切ったら、モバイルでFPSが激上がる。

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

PostProcess モバイルでは全然使えんね。ただ画面に水中にいるように、
青緑のフィルターかけたいだけなのに…
901
(1): 2020/01/05(日)12:46 ID:8EV9fu0v(1/3) AAS
なら画面全面にimage を半透明で覆えばよくね?
902: 2020/01/05(日)12:50 ID:ZhgV+v79(1/2) AAS
んだんだ。
または光源、環境光の値を変えるべ。
903
(1): 2020/01/05(日)14:39 ID:bo4vBboO(3/6) AAS
>>901 902
アドバイスありがとう。
今回はひとまず Canvas に "画像" を追加して、青緑の半透明に設定し、
水中判定の時にON, OFFすることによって目的の機能が実装出来た。

が、FPSは、水中で27fpsとか微妙な数値になってしまうので、
もう少し水中動作時の処理負荷の原因を追う必要があるみたい。
でもサンキュー。
904
(1): 2020/01/05(日)15:30 ID:ZhgV+v79(2/2) AAS
>>903
リアルタイムならon offで重さが変わるから、色味に影響のない透明度0.01ぐらいで置いて、処理時間をなるべく変化させないということもあるぎゃ。
905
(2): 2020/01/05(日)16:52 ID:UKiA3e/s(1/2) AAS
RAM3GBとかどんなハイスペスマホだよww
そんなの持ってるやつ数パーセントもいないぞ
906
(1): 2020/01/05(日)17:06 ID:oPeOUZBr(1/2) AAS
Unityとは関係ないけどバトルゲームでのアニメーションの時間感覚がわからん

ボタン押す→予備動作→アクション→ヒット→戻るって遷移で
ボタン押してヒットまでの時間を0.33秒にしたら
見せた友人に早すぎてわからんと言われたし…

棒切れで人をポカリと殴るモーションなんだが
907: 2020/01/05(日)18:05 ID:bo4vBboO(4/6) AAS
>>904
ありがとう。今、Canvas に ”画像” 貼る解決法は保留にして、カメラに自作スクリプト付けようと試してた。

void OnRenderImage(RenderTexture src, RenderTexture dest) {
 Graphics.Blit(src, dest, material);
}
とかで、試しにマテリアルに "water" のマテリアル渡したら効果が付いた。
よし、初めてシェーダー書くか! と思ったら記述言語 C# じゃない…
省1
908: 2020/01/05(日)18:12 ID:8EV9fu0v(2/3) AAS
>>906
愚痴なら次のスレに
【質問以外なんでもOK】Unity雑談スレッドその3
2chスレ:gamedev
909
(1): 2020/01/05(日)18:14 ID:bo4vBboO(5/6) AAS
>>905
RAM 3GBは個人的なアプリ動作の想定値だったけどこれから増えてくると思う。
数年前の RAM 1GB〜2GB時代には、モバイルでUnity制作の3Dゲームは厳しいだろうなと思ってたけど、
RAM 3GB〜4GBの時代になりつつある今、Unityで3Dゲーム開発だ!と思ってここに来たとこ。
910
(1): 2020/01/05(日)18:55 ID:UKiA3e/s(2/2) AAS
>>909
日本人の後進性を舐めすぎ
3GBスマホなんか絶対普及しないから諦めろww
911: 2020/01/05(日)19:03 ID:Vyi2hsuy(1/2) AAS
浦島太郎かよ
いまどきキャリアもMVNOも3GB以上しか売ってねーよ
912: 2020/01/05(日)19:08 ID:oPeOUZBr(2/2) AAS
ID:UKiA3e/sのビルドターゲットってバージョン何?
913: 2020/01/05(日)19:13 ID:UK9nGc23(1) AAS
荒野行動がさらに快適に遊べるようになるんやなあ
914: 2020/01/05(日)19:15 ID:Vyi2hsuy(2/2) AAS
SIMフリーの低スペ機種とか年寄り専用スマホが3GB
3大キャリアが主力で売ってるのは4GBと6GBだからな
915: 2020/01/05(日)19:20 ID:N5s8+lOM(1) AAS
>>905 >>910
これってなんかのネタ?
916: 2020/01/05(日)19:50 ID:IxHDmQr7(1) AAS
書込みがガラプーおじさんだったら笑う
917
(1): 2020/01/05(日)20:47 ID:bo4vBboO(6/6) AAS
自己レスだけど、青緑透明シェーダー作ったが、普通のサーフェイスシェーダーだと
カメラに付けても半透明の視界が得られず、フラグメントシェーダで青緑透明シェーダーを作成した。

Windows 10 開発機でそこそこ動いて、Android 9 にビルド実行したら、激遅というかまともに動かなかった…
まあ、シェーダーの基本の "き" くらいは体験できたので面白かったけど。

自作シェーダーでも無理となるとキャンバス前面に "画像" 貼り付け? 明らかに処理遅くなるんだよな。
918: 弟子 2020/01/05(日)21:30 ID:8EV9fu0v(3/3) AAS
さぁ900越えて加速したね
完走まであと少し愚痴も雑談も歓迎!
頑張っていきましょう!
919
(1): 2020/01/06(月)00:01 ID:dCLcpxvc(1) AAS
>>917
ぽストプロセスでやるべき?詳しく知らんけど
920
(1): 2020/01/06(月)09:42 ID:gkYFwUQg(1) AAS
水の中だし動きも遅くなっていいんじゃね
921: 2020/01/06(月)12:00 ID:LKBBcVzd(1) AAS
Unity関連で初笑い
1-
あと 81 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.024s