質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

2417閲覧

Unityで環境の違い

kazuma_tachiban

総合スコア12

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2020/11/10 07:53

Unityの初心者です。
「Unityの教科書 Unity 2019完全対応版 2D&3Dスマートフォンゲーム入門講座」
と言う本を読みました。
そこでサンプルのゲームを作りながら勉強していました。
色々なサンプルのゲームでそうなのですが、Windowsでテストした時はものすごくプレイヤーなどが速く動きました。
その後、Androidでテストしたら丁度良い速度で動きました。
これは自分のパソコン、スマホが悪いのでしょうか?
何かUnity上で設定、スクリプトをするのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2020/11/10 07:55

その悪いというのは何を指して悪いのでしょうか ちと意味不明です
kazuma_tachiban

2020/11/10 08:04

すみません、書き方が悪かったです。 パソコン、スマホが故障しているとか古いからとかで速度の違いがあるのかと思いました。
guest

回答1

0

ベストアンサー

これは自分のパソコン、スマホが悪いのでしょうか?

悪くはないです。

パソコンとスマホの性能は殆どの場合大きく違い、
性能が違えば秒間処理回数とも言えるフレームレートが異なるので当然とも言えます。

・フレームレートを固定していない
・移動をUpdateでおこなっている
・速度にTime.deltaTimeを乗算せず移動量の公平性を持たせていない

この現象は上記を満たせば普通に起こりえます。
スマートフォンゲーム入門講座というくらいであればこの辺も説明していそうですが見落としは無いでしょうか?

何かUnity上で設定、スクリプトをするのでしょうか?

この現象の修正には

・フレームレートを「性能が低い方」に合わせて固定(Unity上で設定・スクリプトに記述)
・移動にはFixedUpdateを使う(スクリプト)
・速度にTime.deltaTimeを乗算(スクリプト)

のいずれかおこなって下さい。

「フレームレートを固定」はこちらのサイトが画像付きで分かり易いです。
https://ameblo.jp/santiago-bernabeu/entry-11974077338.html

・追記.1
「フレームレートを固定」は設定の手間と他の要因でのズレが発生するので今回の問題解決の最良の方法という訳ではないです。

どうしてもその方法で行う場合は公式の方法がやはり正確なのでsakura_hanaさんが記載している公式ブログを試して頂けたらと思います。

投稿2020/11/10 09:13

編集2020/11/11 04:35
Hawn

総合スコア1222

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kazuma_tachiban

2020/11/10 14:38

ありがとうございます。 「フレームレートを固定」を勉強します。
sakura_hana

2020/11/11 01:14

横から失礼します。フレームレート固定はそのサイトの方法だと無理です。 VSync設定は「モニターのリフレッシュレートに合わせる」なので例えば60Hzのモニターなら60fps、144Hzのモニターなら144fpsになる(またはその半分になる)ので結局環境に依存します。 「Application.targetFrameRate」も「フレームレートの最高値がその値になる(そうなるようになるべく頑張る)」のであって場合によってはもっと下がる場合があります。 固定したい場合は以下が公式情報ですので参考になります。 https://blogs.unity3d.com/jp/2019/06/03/precise-framerates-in-unity/ 今回のケースの場合「移動にはFixedUpdateを使う」または「速度にTime.deltaTimeを乗算」が最適かと思います。
Hawn

2020/11/11 02:47 編集

targetFrameRateまでやってもらって性能が低い方のフレームレートの数字に合わせれば大きくズレないかなという判断でしたがVSyncの詳細説明も書いてないので参考記事としては不十分でした。 公式のブログも見てはいたものの初心者の人には煩雑かなと思ったので別のサイト探してしまったのですがやはりそちらを引用するべきでした。
fiveHundred

2020/11/11 02:54

同じく横やりで失礼します。 処理落ちが発生した場合、Update()が呼ばれる回数が少なくなることも考えられます。 あんまり自信が無かったのでしばらくスルーしていましたが、「フレームを固定する」のではなく、「Update()が呼ばれる数が変わるということを前提にする」ほうが普通なので、やはり「移動にはFixedUpdateを使う」か「速度にTime.deltaTimeを乗算」としたほうがよろしいのではないかと思います。
Hawn

2020/11/11 03:00

確かに... 私も設定の手間や他の要因でのUpdate呼出し回数のズレがあるので「フレームレート固定」は最良の方法とは思っていないのですが一番上に記述しているのでおススメの方法みたいに見えてしまうのも良くなかったです。 その事は回答に追記しておきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問