【Unity】Time.timeScaleを変更した上でdeltaTimeを取る方法

個人的に、かなり久しぶり(3ヶ月弱ぶり)のブログになりますが、今回はUnityのTime.timeScaleに関して書いていきます。

とはいえ、一口にTime.timeScaleを取ってみても注意点は幾つかあると思いますけど、この記事ではTime.timeScaleの値を変更したときに、Time.deltaTimeも一緒にずれてしまうのでその計算方法についてです。

Time.deltaTimeと、Time.realtimeSinceStartup

ゲームなどでよくある制限時間などは、Time.deltaTimeを利用して計算することが多いです。しかし、Time.timeScaleを変更すると、そのTime.deltaTimeの時間の流れをも変えてしまいます。(どう変わるかは後述します)

まず、Time.timeScaleの値の意味合いは以下になります。

  • Time.timeScale = 1.0f (通常(1倍速))
  • Time.timeScale = 2.0f (2倍速)
  • Time.timeScale = 0.5f (0.5倍速)

そのため、Time.deltaTimeも上記の速度になるので、Time.timeScaleが1fでないと実際の時間(1倍速)とはずれてしまいます。それは困りますよね。『おれ、ゾーンにでも入っているのか…』みたいな気持ちにさせてしまうかもしれませんよね。まぁそれはそれでアリな気もしなくはないですけど。

ということで、この場合に使えるgetterが用意されているわけです。それが、Time.realtimeSincesStartupです。これは、ゲームの開始から実際の時間軸で起動時間を計測しているので、この起動時間を利用すればTime.timeScaleに影響せずにdeltaTimeが取れるようになります。やったね!

 

そこで、Time.timeScaleと、Time.deltaTime、Time.realtimeSincesStartupを検証してみました。検証に使ったスクリプトと結果は以下になります。この結果のように、Time.timeScaleの値を変更しているときは、Time.realtimeSincesStartupを使ってdeltaTimeを計算できますよーという話でした。(多少のズレはご愛嬌ということで…)

※個人的に、Gistを使って見たかっただけという話もありましたw

 

 

時間とお金は絶対値で考えた方が絶対良い

201609_tokei

気付けば今年も残り1/4となってきました。毎年、この季節になるとなんだか焦燥感に襲われてくる気がしてます。

と、まぁ前置きはこのくらいにして、本題に入っていきますが、個人的に最近感じていることがあります。それは、「時間とお金は絶対値で考えた方が絶対良い」ということです。

続きを読む

Galaxy x GearVRを初めて利用するときの手順

201606_gearvr

この度、遅ればせながら最新のGalaxy S7 edgeを購入しました。事前予約キャンペーン(GearVRかポイントをもらえる)に申し込むために事前予約してましたが、キャリアとの間にトラブルがありましてなんやかんやありまして、今頃となりました。。

その話は置いといて、GearVRは借りていたものがあったので、早速VRを試してみようと思ったところ「どうやってアプリをダウンロードすればいいんだ?」となったので、簡単にはなりますがその手順を書いていきます。(分かれば、本当何てことなかった…)

続きを読む

知らないことを知ろう!Wikipediaの記事をランダムに表示してくれるURL

201605_wiki

あなたは新しいこと、自分が知らないことをどうやって知っていますか?

これは当然、インターネットやテレビ、雑誌、他にも人と話したりするなかで知っていくことが多いと思います。僕もそうです。ただ、どうしても知る分野が偏りがちになってしまうで、たまには別のことを知りたいと思ったりすることもあります。

そもそも論ですが、「知らないことを知る」っていうのは正直なかなか難しいです。だって知らないんですから、知りよう(調べよう)がないです。こういうのは割と偶然知って(聞いて)、調べて知るということが多いのではないでしょうか。聞いたことあるレベルだったらまだしも。

続きを読む

【Unityメモ】背景をスクロールさせて、移動しているように見せる方法

Unity-Logo

シューティングゲームや、キャラがひたすら走るようなゲームにおいて、背景(マップ)を作り込むのはけっこうしんどいですし現実的ではないと思います。

そういったゲームの場合、基本的に背景は変えずにプレイヤーをその場で移動させているように見せることが主流なんじゃないかと。(特に、カジュアルゲーム)

ちょうど自分もいまそのような仕組みでゲームを作成していたので、整理がてら書いていきます。

続きを読む

未経験でもIT業界に進みたいなら、まずはPaizaとCodeIQから始めてみよう

all_coding

今までIT業界で働いたことはないけど、IT業界に就職・転職したい人ってけっこう沢山いると思いますが、未経験ということが足枷になっているケースも割と多いんじゃないかと考えています。

ポジティブだったり、アクティブだったりでガンガン攻めていける人は特に気にしていないですが、そうでない人はなかなか難しいですよね。僕もそちら側の人なので。。

実際、僕はIT業界を経験しているので参考にはならないかと思いますが、「もし自分が未経験だけどIT業界に進みたい」と行動するのであればという視点で整理してみます。

続きを読む

日本に配送される Oculus Rift に Xbox one のワイヤレスアダプターが同梱されない事態に

oculus_cv1

本日(2016/4/26)正午ごろに、Oculus からメールを届きました。

「Xbox One ワイヤレスアダプター for Windowsが日本へのRift出荷に含まれない件について」とのタイトルで、内容は要約すると「各種規制による影響で日本で流通させることができないので、日本向けの出荷には Xbox One のワイヤレスアダプターは同梱できません。代わりに有線でつなぐためのUSBケーブルを同梱します。」とのことのようです。

続きを読む

【Unityメモ】Render Textureを使って、擬似的に鏡を表現する方法

Unity-Logo

Unityは以前から趣味的に使っていましたが、いよいよ本格的に使うことになってきたということもあって自分へのメモと理解を深めるためにブログでちょっと書いていこうと思います。

ということで、記念すべき第一回目は「Render Textureを使って、擬似的に鏡を表現する方法」です。

一回目から何でこんなテーマかと言うと、最近必要に駆られたやってみたからです。今後もそういう形でテーマは採択していくことになるかと思います。続けばですが。笑

続きを読む

Oculus Riftの配送予定が確定したが、VR-HMDは群雄割拠の時代に入りそう

The Oculus Rift headset is tested by attendees at the Eurogamer Expo at Earls Court in London.

個人的にはだいぶ久しぶりな感じのブログにはなりますが、本日(16/4/12)に Oculus Rift(CV1)の配送予定が更新されました。

おそらくまだ日本でかつ個人でOculus Rift が届いた人は、いてもごく少数かと思います。たまにイベントなどで見かける製品版は、正規のルートで手に入れたものではない(いわゆる業務提携のような形(←これも正規っちゃ正規ですが…))なのかなと。

続きを読む

WordPressでログイン後の管理画面に何も表示されない時の対処

all_coding

こないだWordPressのテーマを少し編集しようかと思っていじったところ、気付いたら管理画面に何も表示されなくなりました。

サイト(ブログ)自体は問題なく表示されているのですが、どうにもこうにもログインすると何も表示されない(真っ白な画面)になってしまい、しばらくの間、呆然としていました…。このままでは、ブログの投稿なども何もできやしないと。

自分の例で言えば、サーバーに直接アクセスして作業していたことが原因でしたが、本当に焦ったので、メモも兼ねて記事として残しておきます。

続きを読む