【3Dゲームエンジン】Unity質問スレッド1
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2012/04/20(金) 13:11:07.27ID:wu5IoHobWindows/Mac用。JavaScript/C#/Booといった汎用言語を使用できるのが特徴です。
フリー版で開発したゲームは個人・法人を問わず追加のロイヤリティーなしで販売できます。
プラットフォームサポートはiPhone/iPod Touch/iPad、Mac、PC、Web、Wii、Xbox360、Android、PlayStation 3他
次スレは>>970を踏んだ方が建てること。ダメなら>>980か>>990が建てて下さい。
■本スレ
【3Dゲームエンジン】Unity 13
http://toro.2ch.net/test/read.cgi/gamedev/1334399781/
■Unity 2ch Wiki(まとめ、過去ログ、リンク集)
http://www24.atwiki.jp/unity2ch/
●リンク
・Unity(日本公式サイト)
http://unity3d.com/japan/
・ユーザーガイド&リファレンス
http://unity3d.com/support/documentation/
(日本語訳)
http://ws.cis.sojo-u.ac.jp/~izumi/Unity_Documentation_jp/Documentation/Manual/
・チュートリアル
http://unity3d.com/support/resources/tutorials/
・FAQ
http://answers.unity3d.com/index.html
・Unityのスクリプト公式
http://unity3d.com/support/documentation/ScriptReference/index.html
・MSDN
http://msdn.microsoft.com/ja-jp/ms348103←スクリプトのエラー番号をこれで検索すると原因が日本語で出てきます。
0260名前は開発中のものです。
2012/05/05(土) 20:11:18.03ID:ZLDNkYAd俺の場合、VC#のフォームデザイナーでEditorとか作るとユーザーコントロール作って何個も置いたりするから、オブジェクト指向っぽくなるけど、
ゲーム作ってると手続型に近くなるんだよなー
何個も似たようなクラス作って継承するくらいなら、最初のクラスを拡張すればいいじゃん?
みたいな気分になる
マップ管理もキャラクター管理も結局一箇所にデータまとめた方が楽に感じるんだよね・・・
敵と味方と村人の違いは配列に属性持たせてメソッドの振り分けで終わっちまう
0261名前は開発中のものです。
2012/05/05(土) 20:44:12.44ID:M8cXfY/Cそんな事は無い
内容次第
0262名前は開発中のものです。
2012/05/05(土) 21:11:16.94ID:4Z1053c5>>261
オブジェクト志向できない俺としてはだな。
拡張を繰り返してる内に、
イチから別クラスを立ち上げた方が良いと判断する時って
わかりやすさとめんどくささによるから
人によるというだけの事なのかな?
と思う。
0263名前は開発中のものです。
2012/05/05(土) 21:21:21.97ID:ZLDNkYAdよければその具体例をくれ
俺の場合、最初にデータ読み込んで、そのデータ通りにキャラを置くから、そこで一緒に管理した方が楽ってなってるのかもしれん
0264名前は開発中のものです。
2012/05/05(土) 21:29:31.00ID:L823ItE1その場限りで同じ処理あるからまとめとけって使い方なら、サブルーチンでも関数化でも同じようなレベルってだけだと思う。
だから、クラスにまとめようが、まとめないでやろうが、そんなに変わりはないってだけじゃないかね。
0265名前は開発中のものです。
2012/05/06(日) 04:45:16.32ID:RPhFyz4yサブルーチンや函数化ってオブジェクト指向とあんまり相性よろしくなくない?
引数を得て操作した結果を返すってのと、オブジェクトに対して操作要求(メソッド呼び出し)って
意味論的にものすごく相性悪いと思うのだけど
0266名前は開発中のものです。
2012/05/06(日) 05:25:43.01ID:pkjhMuV3>実装とか速度はわからんけど、なんでセッターゲッターがあるかというと、
>オブジェクト指向的に入出力は直接アクセスしないでそれ使えってのと、可能ならメソッドチェーンできるから、くらいの意味かね。
C#はプロパティが使えるから、セッターゲッターは過去の産物だろ。
0267名前は開発中のものです。
2012/05/06(日) 05:39:01.51ID:YNtUl0Kbそれ、ただのシンタクスシュガーでしょうが…
持ち主が知らぬ間にメンバの書き換えが起こりうる状態を避けたいとか、入出力の際にその判断や関連する動作を書ける、ってのが要点で、
それがメソッドの形でも、それを隠したプロパティの形でも、
意味する所は同じ。
0268名前は開発中のものです。
2012/05/06(日) 06:08:39.66ID:pkjhMuV3プロパティがあるのにあえてVector3.Setを用意する意味は?
って話じゃ?
0269名前は開発中のものです。
2012/05/06(日) 07:05:45.96ID:nuHwIyae代入のためだけに一時変数作らなくていいからだろ
0270名前は開発中のものです。
2012/05/06(日) 07:12:19.44ID:pkjhMuV3うん、そうだよね。
だから>>258のレスは的外れだよね?
0271名前は開発中のものです。
2012/05/06(日) 08:32:35.50ID:nuHwIyaeまあ確かに>>258は的外れになっちゃってるかも
一般的なセッター・ゲッターについて書きすぎてて
元のVector3.Setについての質問とは少しずれてきた感じ
スクリプトリファレンス見たらSetの返り値がvoidになってたからメソッドチェーンできなさそうだし
でも一般的なセッター・ゲッターについてならあまり間違ってない
0272名前は開発中のものです。
2012/05/06(日) 09:27:38.84ID:w8We8mJf>代入のためだけに一時変数作らなくていいからだろ
float3つ分の一時変数が作られる罠。
Vector3を1つ作るのより遅そうなイメージ。
0273名前は開発中のものです。
2012/05/06(日) 10:35:14.26ID:nuHwIyae最適化かかると同じになるかもしれないとは一応言っておくが
こんな感じと言えばわかるか
Vector3 piyo;
があるとして
piyo.Set(1, 2, 3);
は
piyo.x = 1;piyo.y = 2;piyo.z = 3;
piyo = new Vector3(1, 2, 3);
は
Vector3 temp;
temp.x = 1;temp.y = 2;temp.z = 3;
piyo.x = temp.x;piyo.y = temp.y;piyo.z = temp.z;
書いてるのと同じ
つまりnew Vector3(1, 2, 3);の部分が無駄になる可能性がある
ただし
Vector3 hoge;
がある場合
piyo.Set(hoge.x, hoge.y, hoge.z);
と
piyo = hoge;
はほぼ変わらんだろう
むしろ読みやすいから
piyo = hoge;
の方がいい
0274名前は開発中のものです。
2012/05/06(日) 11:04:35.15ID:5wPGrv4K0275名前は開発中のものです。
2012/05/06(日) 12:42:27.21ID:nuHwIyaeキャッシュのヒット率とか最適化の関係で
実際に使う時のコードで計測した場合と別の結果が出る事があるので注意
あと一時変数が作られる程度の無駄なんて1フレームに数回通る所じゃ気にしなくていい
1フレームに数万回以上呼び出される所だと気にしないと遅くなるけどな
0276名前は開発中のものです。
2012/05/06(日) 12:43:31.29ID:SEqkI7oxまとめてでしかアクセスできないってのは違う。
0277名前は開発中のものです。
2012/05/06(日) 12:54:17.50ID:CgdBpbQWと
piyo = new Vector3(1,2,3);
それぞれ
500万回実行
俺の環境でそれぞれ
69ms
82ms
何度か回したが
大体1.18倍程度かなあ
参考まで。
ちなみに時間計測にはStopwatchクラスを使用。
0278名前は開発中のものです。
2012/05/06(日) 12:57:06.40ID:5y39eaOs0279名前は開発中のものです。
2012/05/06(日) 13:27:59.27ID:YNtUl0Kb見てる人はわかってると思うけど一応書いておくと、
=で結んでコピーって、C#の場合、対象がstructとclassで動作違うから注意な
structがディープコピーで、classはシャローコピー
structでシャローコピーさせたい場合は ref しないとダメ
0280名前は開発中のものです。
2012/05/06(日) 13:44:12.60ID:CgdBpbQWと
piyo.Set(hoge.x,hoge.y,hoge.z);
それぞれ500万回も同様にやってみたがそれぞれ、
24ms
60ms
だった。
ドット三連コストの負けか。
0281名前は開発中のものです。
2012/05/06(日) 14:08:57.49ID:quxC+YZV>>279
0282名前は開発中のものです。
2012/05/06(日) 14:11:56.37ID:nuHwIyaeまだC++の感覚のまま書いててたまに間違えそうになるからな
>>280の結果はhogeの読み出しにコストかかってる感じかね
0283名前は開発中のものです。
2012/05/06(日) 14:37:56.09ID:CgdBpbQW>>277のテストタイムと合わせて考えると、より低レベルで実装されてるであろう構造体のコピーだけってのが単純に速いって感じかも。
0284名前は開発中のものです。
2012/05/06(日) 14:46:27.10ID:MCmxwxtmもうテスト結果も出たし蒸し返す必要ないけど、一応。
>piyo.Set(1, 2, 3);
>は
>piyo.x = 1;piyo.y = 2;piyo.z = 3;
それは参照渡しの場合ね。
Set関数は値渡しだから、
float x = 1;
float y = 2;
float z = 3;
piyo.x = x; piyo.y = y; piyo.z = z;
って事をやってる。
0285名前は開発中のものです。
2012/05/06(日) 15:22:28.54ID:nuHwIyaeの時間が
Vector3 hoge;
hoge.Set(1, 2, 3);
piyo = hoge;
ってやってそうな感じの時間だなぁと思ったり
>>284
まあ引数を渡す機構上そうなるのは知ってるんだが
参照渡しの場合はその表記になるって事は
参照渡し版Set関数が実装できてそっちの方が速いって事?
0286名前は開発中のものです。
2012/05/06(日) 16:39:13.90ID:t1dXxOYS気になるならC#スレいったらいいと思うよ
タコってくれるから
0287名前は開発中のものです。
2012/05/06(日) 17:10:42.61ID:YNtUl0KbC++のイメージで言うと、先にオペレータオーバロードされてないか、
とかが真っ先に浮かぶよな
POD型としてのコピーももちろんそうだけど
0288名前は開発中のものです。
2012/05/06(日) 17:13:37.28ID:MCmxwxtmゲームはすでに完成したので気にしてます。
0289名前は開発中のものです。
2012/05/06(日) 17:33:11.55ID:5wPGrv4K0290名前は開発中のものです。
2012/05/06(日) 18:07:43.19ID:nuHwIyaeとりあえずは
速[ただの代入>Set>わざわざnewして代入]遅
みたいだから
piyo = new Vector3(1,2,3);
って書くくらいならSetした方がいいってだけ
Vector3にVector2をオペレータ通して代入するとかになるとまた計測してみないとわからんが
>>287
昔書けるからってVector3をoperator+で繋ぎまくってて
一時変数が大量にできてたのを知った時
何とも言えないがっかり感を覚えたのは良い(悪いかもしれない)思い出
0291名前は開発中のものです。
2012/05/06(日) 19:44:29.44ID:YNtUl0Kbその場合って、普通const 参照の受け返しだと思うが
0292名前は開発中のものです。
2012/05/06(日) 19:46:15.08ID:YNtUl0Kb+= と勘違い
0293名前は開発中のものです。
2012/05/06(日) 20:48:34.09ID:xVvBNPMW仕様はunityの環境に左右されるんじゃないの?
JSがスクリプトとして実行されるのでないように。
まあ変な勘違いなくすために踏襲されてるところが多いんだろうけど
0294名前は開発中のものです。
2012/05/06(日) 21:24:15.11ID:MCmxwxtm全然分かってないw
「MONO」から調べるべしw
0295名前は開発中のものです。
2012/05/06(日) 21:29:34.46ID:okBu8Xln0296名前は開発中のものです。
2012/05/06(日) 21:36:36.94ID:quxC+YZVMono知らないだけで。
0297名前は開発中のものです。
2012/05/06(日) 21:54:10.80ID:t1dXxOYSで?そこ速度のネックになってそう?
0298名前は開発中のものです。
2012/05/07(月) 06:10:27.81ID:dzz1heKxPCでは問題無いけど、iPhone用なんで、
チューンアップできる所はすべてやるつもり。
60fpsは厳しいけど、常時30以上は保ちたい。
0299名前は開発中のものです。
2012/05/07(月) 06:30:02.04ID:PJSsNL5D0300名前は開発中のものです。
2012/05/07(月) 06:47:06.84ID:sZKAJIg0うん、だからウィークポイントを計測した?
0301名前は開発中のものです。
2012/05/07(月) 07:16:15.02ID:dzz1heKxは?
0302名前は開発中のものです。
2012/05/07(月) 09:09:32.77ID:rDY4XA3t多分、速度のボトルネックになりそうな箇所を特定したら、そこになったのか?
と聞きたいんだと思う
0303名前は開発中のものです。
2012/05/07(月) 10:16:50.64ID:TfKCZfMJますます意味不明。
0304名前は開発中のものです。
2012/05/07(月) 11:31:39.04ID:7OBnf88eほとんどの質問者がフルボッコにされて泣かされている
あいつら頭おかしい
0305名前は開発中のものです。
2012/05/07(月) 12:49:01.65ID:0jWuDqdU0306名前は開発中のものです。
2012/05/07(月) 18:43:59.63ID:sZKAJIg0検証方法も不明なのに君はなにをやろうとしてるの?
馬鹿?
開発にもこいつなにやろうとしてんだろうとか思ったら
頼まれてもいない最適化に時間使ってる馬鹿がいてマジなぐりたくなった
一応どんな検証したのか聞いてみたら検証データも残してないし
基準になる数値も残ってない
なにとなにを比較したのか聞いてみても複数の要素をあっちこっちいじってて比較すらできてない
とか完全に時間の無駄やってて
3日でお払い箱にした派遣の○○くん思い出したよ
ハヤクシンデネw
0307名前は開発中のものです。
2012/05/07(月) 18:58:11.14ID:oinbkdqk0308名前は開発中のものです。
2012/05/07(月) 19:16:11.25ID:PJSsNL5Dしかも自由度高そうだし。
0309名前は開発中のものです。
2012/05/07(月) 19:29:42.00ID:Oiuj6SYB次に反省をいかせないのか
0310名前は開発中のものです。
2012/05/07(月) 19:32:52.59ID:KhvJrHsu0311名前は開発中のものです。
2012/05/07(月) 19:39:35.81ID:EmMzD5fk0312名前は開発中のものです。
2012/05/07(月) 19:58:20.35ID:UlIDD954無意味では無いでしょ。
例え1%であっても速くなるのなら意味はある。
特にモバイル機ではオーバーヘッドはなるべく減らすべき。
0313名前は開発中のものです。
2012/05/07(月) 20:05:28.58ID:PJSsNL5D無意味ではない。
無意味ではないが必要ないというところか。
物事は質ではなく量で考えよう。
実際には充分な速度を持てるのに
高速化に時間を費やすのは無駄。
可能な限り無駄でもやる。
これが日本の病。
0314名前は開発中のものです。
2012/05/07(月) 20:41:46.13ID:E5G2+9EB高速化を無駄だと思うなら君はゲームプログラマ向きじゃないね。
sin関数よりやや速い疑似sin関数を使ったり、
2点の距離を測るのにルートを使用しない関数を使ったり、
ゲームプログラミングはそういう効率化の積み重ねだから。
0315名前は開発中のものです。
2012/05/07(月) 20:46:10.93ID:sZKAJIg0>sin関数よりやや速い疑似sin関数を使ったり、
は?(笑)
0316名前は開発中のものです。
2012/05/07(月) 20:56:21.31ID:E5G2+9EB知らないってことはゲーム機での開発経験ないでしょ?w
PCはいいよねぇリソース無限でw
0317名前は開発中のものです。
2012/05/07(月) 20:57:20.86ID:xq4cCikDちょっとでも速度や軽さ稼ぎたいってのはわかる。
PCだったら、作りたいものにもよるが、そういうレベルで気にするもんでもない。
極限まで最適化するなら、マシン語とかになる。極端な話。
だから、時代や環境や制作コストに合わせた、費用対効果でできる範囲でやればいい。
絶対に○○しないといけないんだ!みたいな先入観にとらわれないように。
0318名前は開発中のものです。
2012/05/07(月) 21:04:37.95ID:oinbkdqk0319名前は開発中のものです。
2012/05/07(月) 21:10:02.43ID:xq4cCikD実行環境にもよるだろうから、コスト0で速くなるなら絶対にやった方がいいけど、
実際にやるかどうかは、ケースバイケースだろうな。
0320名前は開発中のものです。
2012/05/07(月) 21:14:39.76ID:CZs6WxXS俺はキミの言ってることに賛成だよ。
レジが一台しか無いスーパーで、いつもレジが大渋滞になってる場合に、
個々の商品の陳列の順番を多少変えたところで客の回転に関しては
“あまり”意味がない。こういう文脈では無意味って言ってもいいと思う。
文脈って大切だよね。
0321名前は開発中のものです。
2012/05/07(月) 21:17:24.00ID:xq4cCikD完全に完結したプログラムでそこ以外一切いじらないならそうだけど、
修正や追加したときに、その前提条件なんてすぐに変わるよ。
まぁ、絶対に変わらないって自信があるならいいけど、
かなり限定された条件での話になるな。
0322名前は開発中のものです。
2012/05/07(月) 21:20:18.61ID:PJSsNL5D0323名前は開発中のものです。
2012/05/07(月) 21:20:55.81ID:CZs6WxXS〜という前提であればっていう話だよ。
だからその前提であればその通りだねって言ってるだけ。
〜という前提はあるが、状況はいつでも変わりうるからなんとかかんとかって
そういうのはこの文脈においては“意味が無い”と思うよ。
状況によりけりだから、○○という状況であればって話をしてるわけだしさ。
話を交ぜ返して状況によりけりだからって言うのにいったい何の意味があるの???
0324名前は開発中のものです。
2012/05/07(月) 21:21:33.33ID:psIqeyAC0325名前は開発中のものです。
2012/05/07(月) 21:23:13.83ID:PJSsNL5D【3Dゲームエンジン】Unity総合スレッド14
http://toro.2ch.net/test/read.cgi/gamedev/1335186904/
0326名前は開発中のものです。
2012/05/07(月) 21:23:31.30ID:xq4cCikD質問スレだしw
0327名前は開発中のものです。
2012/05/07(月) 21:25:56.59ID:oinbkdqkXNAの話だけど、この人がGPUの描画タイミングについて1フレーム遅れて処理されてるって説明してるよね。
ttp://blogs.msdn.com/b/ito/archive/2009/03/25/how-gpus-works-01.aspx
UnrealEngineでもそのようにされてるってのをどっかで見たことがあって、Unityでも当然そのように処理されてると思い込んでいたんだけど、もしかして違うの?
UnityってGPUとCPUの処理が直列で処理されてるの?
それだったら今までの俺の主張は間違いだから、高速化できるところは全て高速化してください。
0328名前は開発中のものです。
2012/05/07(月) 22:02:40.57ID:yFLkWMuWそう思っていた次期がわしにもありました
家庭用 Famicom->MegaDrive->PCEngine->SuperFamicom->PlayStation->PS2->PS3
PC 8001->8801SR->9801->IBMPC ここからビデオカード -> S3 -> Matrox -> PowerVR ->Geforce ->GForceFX(ココまで涙目)
最近やっとだw
0329名前は開発中のものです。
2012/05/07(月) 22:55:43.12ID:sZKAJIg0で?
それはunityでも意味があるって話をしてるの?
0330名前は開発中のものです。
2012/05/07(月) 22:57:26.21ID:+CDYVz9t0331名前は開発中のものです。
2012/05/07(月) 23:12:45.36ID:sZKAJIg0それはこちらのセリフだ
一生懸命Setの時間なんてはかってるから意味があるのか?って聞いたら
予想通りの返答だよなカス
お前みたいなクズはこのままじゃなにも作れない
絶対だ
それはお前の人生がなにも積み上げてこなかったからだ
砂の上に柱立てて、砂の上に土台作って、砂の上に・・・てな具合だな
まず、砂の上でやるなよwって当たり前のこと言ったら君は逆上したんだ
俺のやることに口出すなよってね
周囲からみたら馬鹿にしか見えない、お前大丈夫かよ?って誰でもいうだろw
今回だってよく自分の行動を分析してみるべきだと思うぜ
なんでSetの速度なんて測ろうと思った?
君の目的なにかな?
どうして目的忘れてそんなことしちゃったのかな?
ゲームは完成するかな?ってね
0332名前は開発中のものです。
2012/05/07(月) 23:24:21.07ID:KhvJrHsuここは質問と回答だけあればいいスレです
0333名前は開発中のものです。
2012/05/07(月) 23:47:16.54ID:oinbkdqk仮にCPUでの処理が足を引っ張ってるなら完全に設計が悪いのでSetの高速化なんてやってる場合ではないよ。
そもそも最近のゲームがUnrealScriptやらC#やらJavascriptと言ったCやC++の20倍くらいは遅い言語で問題ないのかというと、
当たり判定やルート探索みたいなNativeで行ってる処理以外は殆ど問題にならない程度の負荷しかないからだよ。
だから、そんなとこが問題になるようなら設計見直した方がいいよ。
で、GPUとCPUが直列でしか処理できないなら、格ゲー・弾幕STG以外のものを作ってるならUnity以外のもので作った方がいいよ。
格ゲーや弾幕STGみたいに1フレ2フレ単位で技の判定が行われるゲーム以外、1フレーム内にCPUとGPUの処理を押し込む意味は殆ど無いよ。
逆に言えば描画が1フレーム遅れる場合、格ゲーをUnityで作るのは完全に不向きだと思うよ。
まぁシビアじゃないものを作るなら別だけど。
0334名前は開発中のものです。
2012/05/08(火) 02:16:03.73ID:ZifHTSGd最高に笑えるぜ!
0335名前は開発中のものです。
2012/05/08(火) 05:15:01.01ID:FOolLTyw俺の中の結論としては、
シチュエーションにあわせて普通に使えばいいって程度の差で、古いソース書き換えるほどの話では無いってのがわかったから満足。
今更っぽさと最近のUnityの開発方向からみて多分スマホ系向けの最適なんじゃないかと思うが、俺はスマホに興味ないから興味あるやつがいるならそっちは勝手に調べればいいよ。
あと煽っても何も出さないよw
0336名前は開発中のものです。
2012/05/08(火) 05:39:59.33ID:7lGBCwIQそれが一番無駄っぽいw
0337名前は開発中のものです。
2012/05/08(火) 05:52:57.36ID:eXoxC6cjスマホでは速度だけでなく、バッテリー消費量も重要だからね。
オーバーヘッドを減らしてバッテリー消費を少しでも抑える努力は
プロなら必要になる。
でも趣味でやってるだけなら別に気にしなくてもいいよ。
0338名前は開発中のものです。
2012/05/08(火) 07:06:09.38ID:T6q1+zrPそこが気になったとしたら、恐ろしくセンスないな
0339名前は開発中のものです。
2012/05/08(火) 07:10:46.39ID:vidcy9sx言われた事だけやってるタイプ。
0340名前は開発中のものです。
2012/05/08(火) 12:15:16.06ID:085SRNuC・・・そういうにわかがよく出しそうなゲームプログラマな自分を装う例は釣りなのか?
0341名前は開発中のものです。
2012/05/08(火) 16:21:35.41ID:ZifHTSGddrawcallが54もある。
これって普通?
0342名前は開発中のものです。
2012/05/08(火) 16:35:57.87ID:jCbXC+xa0343名前は開発中のものです。
2012/05/08(火) 16:38:25.71ID:ZifHTSGd0344名前は開発中のものです。
2012/05/08(火) 17:32:03.73ID:ZifHTSGdリアルタイムライトをメッシュ一個に当てるとドローコールが+1
二個に当てると+2
0345名前は開発中のものです。
2012/05/08(火) 23:14:31.81ID:HNJP8cLp遅レスですまないが、となると普段は固定フレームで処理が重くなったらスローになるような昔ながらのゲームは作りにくいって事かな。
0346名前は開発中のものです。
2012/05/08(火) 23:57:58.47ID:T6q1+zrPいや、別に
Hierarchyに1つだけおいたゲームオブジェクトのAwakeとUpdateしか使ってないよ俺
Updateの中で16ms越えたら〜ってやってる
普通に動くよ
描画を止めるってできんのかな?
描画だけはUnityにまかせて動いてない静止画をたくさんかいてもらってる状態
止められるのかな?これ?
0347名前は開発中のものです。
2012/05/09(水) 00:14:20.60ID:hMBhHpmQタイマーつけて時間がくるまでupdateさせないとか?
0348名前は開発中のものです。
2012/05/09(水) 00:31:45.46ID:7Xe8n22y>>249だが確かに少し作りにくいかもしれない
自分のスクリプト内で処理する移動量とかは
1秒でx軸に+100の速度で移動する場合
pos.x += Time.deltaTime * 100;
とするが
60fps前提で処理が重くなったらスローにする場合
pos.x += (1/60.0f) * 100;
にする
つまりTime.deltaTimeを使用して経過時間基準にしている場所をフレーム基準の係数に置き換えるだけでいい
ただしFixedUpdateは処理が重くなった場合に連続して呼ばれた気がする(うろ覚え)ので注意
アニメーションは通常UpdateとLateUpdateの間でTime.deltaTimeを使ってUnityが進めるようなので
>>239のようにする
あれは再生後に再生速度に0を設定してUnityが時間を進めるのをキャンセルし
Updateで1フレームずつ進んだ場合の時間を設定してる
わざわざフレーム数を保持しなくても
state.time += 1 / 60.0f;
でもとりあえずは動きそうだが長いアニメーションだと計算誤差が溜まったりするかも?
で、方法がわからんかったのがPhysics
あまり使ってないからというのもあるが
Physics関連の進み具合を調整する方法がぱっと思いつかなかった
誰か処理が重くなったらスローになるようにPhysicsの設定ができるなら教えておくれ
なので自分としては「アニメーションに少し細工が必要だがPhysicsを使わなければ可能」と思ってる現状
0349名前は開発中のものです。
2012/05/09(水) 00:38:17.86ID:7Xe8n22yでもEditor上だと設定が無効っぽい?
アニメーションの方法ももっと簡単にできる方法があれば誰か教えてくれ
0350名前は開発中のものです。
2012/05/09(水) 00:56:44.34ID:hMBhHpmQごめん。よくわかんないんだけど、アニメーションが再生してる間はズレてて、再生が終わったときにモーションの長さからあるべき時間を計測して
その時がくるまで静止させておいてるってこと?それってキャラクターが1体だとそれでいいかもしれないけど複数のキャラクタがモーションを切り替えるタイミングが異なってる場合ってどうなる?
>>349
そこはビルドしないとダメらしい。謎仕様の一つだね。
0351名前は開発中のものです。
2012/05/09(水) 01:57:51.93ID:7Xe8n22y普通にアニメーションを再生すると
フレーム基準で進ませたいのにエンジン側はアニメーションを時間基準で進めてしまう
それによってスローになった場合もアニメーションだけはスローにならないので見た目がずれる
という問題点が出る
それを解決するために
アニメーションは再生状態になっているがエンジン側のアニメーションを進ませる処理を無効にして
自分でアニメーションを進めるというのが>>239の処理
>>239の処理にコメントを書くと
function Start () {
animation.Play(animName);// 再生する
animation[animName].speed = 0;// エンジン側のアニメーションを進ませる処理を無効にする
}
function Update () {
// 何フレーム目までアニメーションが進行してればいいかを計算する
++frame;// フレームを進める
var state : AnimationState = animation[animName];// AnimationStateの取得
var maxFrame : int = Mathf.FloorToInt(state.length * 60);// アニメーション全体のフレーム数を計算
frame = Mathf.Repeat(frame, maxFrame);// ループさせる
// フレーム数から時間に戻して設定する
state.time = frame / 60.0f;
}
って感じになる
なんで実際は
同じオブジェクトに付いているAnimationコンポーネントを利用して
フレーム基準でアニメーション進行をさせるスクリプトを書く
それを各キャラに追加していくって感じになるかな
切り替えのタイミングは関係ないと思うの
0352名前は開発中のものです。
2012/05/09(水) 02:22:24.55ID:hMBhHpmQどうもありがとう。
よくわかりました。
unityがわで揃えてくれたらなあ。
0353名前は開発中のものです。
2012/05/09(水) 08:38:17.23ID:rQndBjwEよく知らないけど
0354名前は開発中のものです。
2012/05/09(水) 09:59:25.84ID:5YfS3YVNアニメーションをフレームレート基準にしたいのは
作る物がフレームレート基準で混在させると処理が重くなった時にずれるから
なのでアニメーションをフレームレート基準にしたい事自体は間違ってないと思う
ただし作る物がフレームレート基準なのが間違ってるかどうかは
要求されてる仕様等によって変わるから要求を知らないと判断しようがない
判断しようが無いので知っている範囲でフレームレート基準にする場合の方法を書いてみた
自分でフレームレート基準の物をUnityで作った事は無いから気づいてないだけで見落としはあるかも
Physics関連の部分はフレームレート基準にする方法が思いつかなかった
要求まで見えていてフレームレート基準よりも時間基準にした方がいいと判断できる場合
その要求なら時間基準の方がいいと説明をする方が親切だとは思ってる
0355名前は開発中のものです。
2012/05/09(水) 11:28:40.01ID:VcSq6KSt0356名前は開発中のものです。
2012/05/09(水) 11:43:08.77ID:hMBhHpmQなんのためにあるのでしょう?
0357名前は開発中のものです。
2012/05/09(水) 11:44:16.15ID:hMBhHpmQモーションが進みすぎてると困る。
そういう処理具合の問題。
0358名前は開発中のものです。
2012/05/09(水) 12:45:38.32ID:ralf1cV8ループ動作はWrapMode側で指定。
Loopのチェックボックスは、
綺麗にループするようにエンドのあとにスタートが繋がった形で再生が進むようになるんだと思う。
チェックされていると、前フレームからの経過時間がエンドを超えていた場合などはたぶんエンドフレームをすっ飛ばして再生が進んでエンドには到達しない可能性が高くなる、
そのかわりループは綺麗に繋がると。
0359名前は開発中のものです。
2012/05/09(水) 14:04:14.12ID:hMBhHpmQそれはスプリットのフレーム数を指定する業の末尾にあるloopのチェックボックスですよね。
なんかその上の方にもループやonceを選べるリストがあるよね?
あれとフレーム数を入れる欄の違いがわからん。
スプリットした分と、
スプリットしない分の違いだけで、
スプリットした分だけならフレーム数を入れるとこだけ見てれば良いんだよな?
■ このスレッドは過去ログ倉庫に格納されています