[過去ログ]
【ゲームエンジン】Unity初心者質問スレBuild2 (1002レス)
【ゲームエンジン】Unity初心者質問スレBuild2 http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
838: 名前は開発中のものです。 [sage] 2019/12/30(月) 22:51:24.73 ID:p/zM1Bwy 開発機 Windows 10 では XInput のゲームパッドを bluetooth接続で使用してて、 ビルド先の実機 Android 9 では同じゲームパッドを DirectInput モードで bluetooth接続してるんだけど、 XInput と DirectInput でボタン、軸がバラバラで途方にくれてる。 ゲームパッドは 8Bitdo N30 Pro 2 コードからは、Input.GetAxis("Vertical") == 1 とかで呼んでるけど、 なんかベストプラクティスとかあるのかな? [プロジェクト設定]→[入力]で、ボタン、軸の違う
XInput と DirectInput コンパチで設定する方法とか? http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/838
839: 名前は開発中のものです。 [sage] 2019/12/31(火) 02:21:30.45 ID:5UwvHbim >>838 InputManagerでのゲームパッド完全対応は既製品を網羅して決め打ちするしかないから皆途方に暮れた末にアセットに頼ってるのが現状だよ http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/839
840: 名前は開発中のものです。 [sage] 2019/12/31(火) 08:35:26.33 ID:Y8q/9GVB >>839 どうもありがとう。 なるほど、最終的にはキーコンフィグを自力実装か、アセット頼りになるのか。 Unity 側でOS判定は出来そうだから、開発中は Windows なら XInput で、Android なら DirectInput の デフォルト設定をコード内で選択するようにするか。 でも、それだと InputManager をコードからいじることになるのか。 Input.GetAxis("Vertical") ← ここの "Vertical" をコードから指定する感じだよね。 結構めんどくさいね。
というか、Input.GetAxis には仮想軸の文字列しか渡せないの? オーバーロードも一つもない? そんなバカな… http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/840
841: 名前は開発中のものです。 [sage] 2019/12/31(火) 09:24:48.90 ID:Y8q/9GVB 今、InputManager にかわる新しい入力システム InputSystem が出てたことを知った。 キーパッド入力部分のソースコード全部書き直せってか。 ぐぬぬ http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/841
842: 名前は開発中のものです。 [sage] 2019/12/31(火) 10:07:49.31 ID:D9jsx8E3 >>835 シーンに何も置いてない状態で起こるならエディタ側の問題 空のシーンだと正常に動くならライトやらスクリプトやらが悪さしてる http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/842
843: 名前は開発中のものです。 [sage] 2019/12/31(火) 12:42:41.52 ID:CcuSFy9r >>841 大改修になるけど、今までキー入力のバッファリングが無くて不便だったのがやっと解決されるからアクションゲームとか作ってるなら乗り換えた方がいいよ http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/843
844: 名前は開発中のものです。 [sage] 2019/12/31(火) 15:12:13.49 ID:5UwvHbim Input Systemのドキュメント読んで来た Xbox, PS4, Switchのコントローラーは公式対応で、 その他は汎用HIDを識別とあるがやっぱり自前のマッピングが必要っぽい 未知のコントローラーを検出したらジョイスティックを順番にぐりぐりさせて識別するオートコンフィグさえ実装したら実用レベルだな http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/844
845: 名前は開発中のものです。 [sage] 2019/12/31(火) 15:17:52.78 ID:Oh+ty5S6 やはりアセットの方が楽そうだね。 500円とかなら間違いなく買うw http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/845
846: 名前は開発中のものです。 [sage] 2019/12/31(火) 18:06:11.29 ID:Y8q/9GVB >>843 ありがとう、さっそく InputManager から InputSystem に換装してみた。 ゲームパッドは 8Bitdo N30 Pro 2 で検証。 【結果】 // Dpad:十字キー Gamepad.current.dpad.up.isPressed Gamepad.current.dpad.down.isPressed Gamepad.current.dpad.left.isPressed Gamepad.current.dpad.right.isPressed ⇒ XInput と DirectInput で同じキーが取れる。 // ボタン Gamepad.current.aButton.isPressed Gamepad.current.bButton.isPressed Gamepad.current.xB
utton.isPressed Gamepad.current.yButton.isPressed ⇒ XInput :(※N30 Pro 2のボタン表記では取れない) aButton → Bボタン bButton → Aボタン xButton → Yボタン yButton → Xボタン ⇒ DirectInput : aButton → Aボタン bButton → Bボタン xButton → Xボタン yButton → Yボタン http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/846
847: 名前は開発中のものです。 [sage] 2019/12/31(火) 18:06:35.38 ID:Y8q/9GVB 【状況】 十字キーは XInput と DirectInput のコンパチが実装出来た。 ボタンは XInput では XBOXコンのボタン配置で取れた… DirectInput では N30 Pro 2 の表記の任天堂配置で取れた。 InputSystem の XInput でも任天堂のボタン配置で取りたい。 どうにか出来ないものかな? L、Rはまだ試していない。 http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/847
848: 名前は開発中のものです。 [sage] 2019/12/31(火) 20:58:22.95 ID:p26duGZu みんなアセットを買って解決してるよ http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/848
849: 名前は開発中のものです。 [sage] 2019/12/31(火) 21:17:07.92 ID:Y8q/9GVB >>848 申し訳ない、今回はアセットを購入しない方針で問題を解決したいんだ。 http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/849
850: 名前は開発中のものです。 [sage] 2019/12/31(火) 21:59:33.07 ID:Y8q/9GVB ※L、R は XInput と DirectInput のコンパチが実現してた。 Gamepad.current.leftShoulder.isPressed Gamepad.current.leftTrigger.isPressed Gamepad.current.rightShoulder.isPressed Gamepad.current.rightTrigger.isPressed ⇒ XInput、DirectInput とも leftShoulder → L1ボタン leftTrigger → L2ボタン rightShoulder → R1ボタン rightTrigger → R2ボタン で、結局、ボタンの数だけ ButtonControl 型のフィールドを作って、 OSを判定してボタ
ンの参照を渡して解決した。 自分のコードの中では任天堂のボタン配置で入力処理を書いた。 多分、XInput で ABXYボタンがXBOX配置か、任天堂配置で問題が起こるのだろう。 http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/850
851: 名前は開発中のものです。 [sage] 2019/12/31(火) 22:12:50.69 ID:Y8q/9GVB InputSystem 良いね。でも、Unityの初心者向けサイトはまだ InputManager 使うやり方で 説明されてるので、これから Unity 始める人は InputSystem が使いやすいと思う。 さあ、ひとまず開発環境でのゲームパッド問題は解決した。教えてくれた人ありがとう。 次はフレームレートの問題だな。開発機の Windows 10 では普通に 60fpsで開発してたんだけど、 Android 9 の実機では 60fps では厳しくて、30fps にしようと思ったが、さらに古い Android 5 で 動かしたら、2
0fps 程度じゃないと安定しなかった。 作ってるのは、64マリオみたいな3Dアクションだけど、判定に Ray 投げまくりなので、 fpsが異なる設定の Android の実機で動かすとバグ出まくりだよ… http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/851
852: 名前は開発中のものです。 [sage] 2019/12/31(火) 23:02:42.59 ID:Y8q/9GVB あと ゲームパッドの振動だ。 XInput と DirectInput のコンパチでゲームパッドを振動させる方法があるのかな? http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/852
853: 名前は開発中のものです。 [sage] 2019/12/31(火) 23:50:33.51 ID:Y8q/9GVB というか、InputSystem なら Gamepad.current.SetMotorSpeeds(1f, 1f); とかで、開発環境 Windows 10 で XInputモードの 8Bitdo N30 Pro 2 は振動した。 InputSystem やるじゃん! 公式にゲームパッドの振動に対応したんだと思ったが、 デプロイ先 Android 9 で DirectInputモードの 8Bitdo N30 Pro 2 は振動しなかった… Windows 版は振動対応だけど、Android 版は振動未対応って、ぐぬぬ http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/853
854: 名前は開発中のものです。 [sage] 2019/12/31(火) 23:55:47.91 ID:Y8q/9GVB いや、8Bitdo N30 Pro 2 自体が、DirectInputモードでは振動未対応って可能性もあるね。 誰か、InputSystem の SetMotorSpeeds で、DirectInputモードのゲームパッドを振動させることに 成功したら、教えてくだせえ。 振動ありとなしでは、ゲームの面白さが段違いだよ… http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/854
855: 名前は開発中のものです。 [sage] 2020/01/01(水) 00:35:54.56 ID:cBmOpE+o というか公式に振動の解説あったわ。 https://docs.unity3d.com/Packages/com.unity.inputsystem@1.0/manual/Gamepad.html > 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 に対応
していない… http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/855
856: 名前は開発中のものです。 [sage] 2020/01/01(水) 01:00:44.65 ID:Kx2wbxr1 >>851 そういうときのfixed updateだよ! そしてそこでinput systemが活きてくる! http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/856
857: 名前は開発中のものです。 [sage] 2020/01/01(水) 01:23:21.99 ID:cBmOpE+o >> 856 自分は Unity は初学者だけど、Unity の作法通り、FixedUpdate() で Rigidbody に対して処理書いてオブジェクトの動作させてる。 それでも、fps が変化すると、壁を上りきる時とかハシゴを降りる時とか、Ray 処理の微妙な判定で細かい動作バグが出てる現状… ※オブジェクトの動作は全て自前実装。 ゲームパッドのキー入力は Update() で取ってるけどね。 http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/857
858: 名前は開発中のものです。 [sage] 2020/01/01(水) 02:48:39.67 ID:Kx2wbxr1 >>857 通常のupdate(描画)のフレームレートはいくら下げてもいいけど、fixed updateのフレームをさげちゃダメだよ http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/858
859: 名前は開発中のものです。 [sage] 2020/01/01(水) 10:35:52.59 ID:p4TYEv+8 InputSystemとMRTKのイベント周りは同じ思想になってる?InputSystemよく知らんのでわからんけど http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/859
860: 名前は開発中のものです。 [sage] 2020/01/01(水) 11:09:32.19 ID:cBmOpE+o >>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のイベントという言葉自体が分からないので調べるわ。 http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/860
861: 名前は開発中のものです。 [sage] 2020/01/01(水) 11:18:18.28 ID:ya7ysYpY 2018くらいからデフォルトが0.0167になったはず http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/861
862: 名前は開発中のものです。 [sage] 2020/01/01(水) 11:40:01.82 ID:cBmOpE+o fpsを変えると細かいバグが出る件は、Ray 判定の処理を Update から呼んじゃってるからだと気づいた。 物理処理が一定なのに、Ray 判定を 60fps で呼んだり 20fps で呼んだりしたらそりゃ豪快にバグるわな。 プレイヤーがブロックにめり込んだり、地形に埋まったりする。 でもここの処理を弄るのは、コードの根幹部分からの大改修でへこむは… あとMRTKは複雑で今の自分には必要ないかな。 http://mevius.5ch.net/test/read.cgi/gamedev/1557293737/862
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 140 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.027s