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

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

新規登録して質問してみよう
ただいま回答率
85.46%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

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

Q&A

解決済

1回答

848閲覧

【Unity】.exeを作って実行したらプレイヤーの速度が速くなった

.com

総合スコア8

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

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

0グッド

0クリップ

投稿2021/05/23 03:11

前提・実現したいこと

Unityでexeの書き出しをしたらプレイヤーの速度がかなり早くなってしまいました。

発生している問題・エラーメッセージ

exeに書きだしたらプレイヤーの速度が速くなってしまう

エラーメッセージ:特に無し

該当のソースコード

タイトルのStart()に Application.targetFrameRate = 240;を入れたので一応ここに載せました。
(60の時がexeに書きだした時と同じくらいの速さ。240の時が普段の実行と同じ速さ)

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.SceneManagement; 5 6public class TitleManager : MonoBehaviour 7{ 8 // Start is called before the first frame update 9 void Start() 10 { 11 Application.targetFrameRate = 240; 12 } 13 // Update is called once per frame 14 void Update() 15 { 16 if (Input.GetKeyDown("joystick button 0")) 17 { 18 FadeManager.FadeOut(1); 19 } 20 } 21} 22

試したこと

今のTitleManager(載せているコード)に書いてあることをやっているサイト
https://baba-s.hatenablog.com/entry/2018/08/27/220000

・exeにするときこのサイトを見てやりました。(最後の方にあるサイズとか画質とかの設定画面は出てきませんでした)
https://dianxnao.com/%E4%BD%9C%E3%81%A3%E3%81%9F%E3%82%B2%E3%83%BC%E3%83%A0%E3%82%92%E9%85%8D%E5%B8%83%E5%BD%A2%E5%BC%8F%E3%81%AB%E3%81%99%E3%82%8B%EF%BC%88%E3%83%93%E3%83%AB%E3%83%89%E3%81%AE%E4%BB%95%E6%96%B9%EF%BC%89/

補足情報(FW/ツールのバージョンなど)

2020.2.0b2.3

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

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

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

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

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

guest

回答1

0

ベストアンサー

Update()が呼ばれる間隔は一定ではなく、環境などによって異なります。
(処理の負荷などで、途中で変わることもあります)
そのため、間隔が違ってもいいように、Time.deltaTimeなどを使って補正してあげる必要があります。

投稿2021/05/23 09:57

fiveHundred

総合スコア9908

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

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

.com

2021/05/23 10:40 編集

Update()内でTime.deltaTimeで補正をかけてやれば良いということですか? Input処理をしているので下みたいな感じで。 void Update() { time -= Time.DeltaTime; if(time <= 0.0f) { time = 1.0f; if(Input.~~~) {} } }
fiveHundred

2021/05/23 12:07

Inputは回数が増えようが減ろうが変わらないと思います。 むしろ、Input.GetKeyDown()は押されたときの一回しか反応しないので、こうすると正しく動作しません。 以下の内容に対して修正を行ってください。 プレイヤーや敵の移動など:これらの処理をUpdate()で行っている場合は(物理演算の性質上から)FixedUpdate()にする 画面の暗転など:これは表示だけなので、Time.deltaTimeで補正する
.com

2021/05/25 13:57

すみません。返信遅れました。 言い訳ですが、コードを20個くらい書き直してたので遅れました。 上記の方法でコードを書き直したら正しい、思ったような挙動をしてくれました。 次にexeで出力してゲームを作るような時はまた必ず来ると思うので、その時は念頭に置いて考えたいと思います。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問