【3Dゲームエンジン】Unity質問スレッド28at GAMEDEV【3Dゲームエンジン】Unity質問スレッド28 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト50:名前は開発中のものです。 17/01/13 09:12:19.71 2cQ+7wxA.net >>46 Updateで書こうがコルーチン使おうが関係ないぞ? GC云々と今回の問題は無関係なので、以降コルーチンは使わない前程で話す Time.deltaTimeは60fpsで0.016前後。 Time.deltaTime刻みでしか推移しない値の絶対値が1.192093E-07より小さくなる確率を考えればあり得ないのは一目でわかるだろ 簡単に数値入れて説明するために、あるフレームのUpdate()が呼び出された時点の値を以下の様に仮定する。 timer=3.042f; Time.deltaTime=0.016f; この後timerからTime.deltaTimeが加算され、timerは3.508fとなる。 Mathf.Abs(3.05f-timer)は0.08となり、1.192093E-07より大きいので処理されないままtimerは3.05を跨ぎ越す。 以降Mathf.Abs(3.05f-timer)は増大して行くので永遠に処理されない。 無駄だが敢えてどうしてもMathf.Abs()を使いたいなら判定式は以下のような感じになるだろう Mathf.Abs(3.5f-timer)<Time.deltaTime/2 51:名前は開発中のものです。 17/01/13 09:13:36.44 2cQ+7wxA.net 繰り返し処理前程ならこれで充分 float timer; void Start(){ //実行時刻を保持 timer=Time.time+3.05f; } void Update(){ if(Time.time>=timer){ //繰り返す処理を書く //次の実行時刻に更新 timer+=3.05f; } } 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch