トップページgamedev
1001コメント400KB

【3Dゲームエンジン】Unity質問スレッド17 [転載禁止]©5ch.net

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001名前は開発中のものです。2015/04/19(日) 12:16:54.53ID:Erl+lZnN
3Dゲームエンジン「Unity」の質問に優しく答えるスレです。
Windows/Mac用。JavaScript/C#/Booといった汎用言語を使用できるのが特徴です。
フリー版で開発したゲームは個人・法人を問わず追加のロイヤリティーなしで販売できます。
プラットフォームサポートはiPhone/iPod Touch/iPad、Mac、PC、Web、Wii、Xbox360、Android、PlayStation 3、PlayStation 4、PS Vita他

次スレは>>970を踏んだ方が建てること。ダメなら>>980>>990が建てて下さい。

■前スレ
【3Dゲームエンジン】Unity質問スレッド16
http://peace.2ch.net/test/read.cgi/gamedev/1425192691/

■本スレ
【3Dゲームエンジン】Unity総合スレッド26
http://peace.2ch.net/test/read.cgi/gamedev/1429375487/

■Unity 2ch Wiki(まとめ、過去ログ、リンク集)
http://www24.atwiki.jp/unity2ch/

●リンク
・Unity(日本公式サイト)
 http://unity3d.com/japan/
・ユーザーガイド&リファレンス
 http://japan.unity3d.com/developer/document/
・チュートリアル
 http://japan.unity3d.com/developer/document/tutorial/
・スクリプトリファレンス
 http://docs-jp.unity3d.com/Documentation/ScriptReference/
・FAQ
 http://answers.unity3d.com/index.html
・MSDN
 http://msdn.microsoft.com/ja-jp/ms348103←スクリプトのエラー番号をこれで検索すると原因が日本語で出てきます。
注意事項:アセットおじさんは優しく愛でましょう
0864名前は開発中のものです。2015/06/07(日) 11:09:04.24ID:NVsaOMQp
>>862
これいいですね、ありがとうございます
検討します

>>863
一応自分でもテクスチャ貼ったパネル用意して貼りたい座標にオブジェクトとして
インスタンス化して見たんですがどうにも望んだモノにはならなかったです。了解です
0865名前は開発中のものです。2015/06/07(日) 14:24:36.77ID:1K3iWPRs
質問です
今2Dのゲームを作っててキャラクターに攻撃を与えたら赤く点滅する
という処理を作ってます
update関数のダメージ中処理の中で
float wari=Mathf.Sin(Time.time*50.0f);
spr.color=new Color(1.0f,wari,wari,1.0f);
というものを書いたら希望通りに点滅してくれます
spr変数にはSpriteRendererの参照が入っています
で、動くことは動いたのですがこの状態で実行中にstatsを見たら
点滅中にドローコールが変化しまくります
調べた所spriterendererの色を変更したらその分ドローコールが増える
という事がわかりました
ドローコールを抑えつつ色を自由に変えるなどということは可能なのでしょうか?
0866名前は開発中のものです。2015/06/07(日) 14:34:51.79ID:V5Ubu7SK
Unity5で作ればドローコール木にしなくていい
0867名前は開発中のものです。2015/06/07(日) 14:44:14.05ID:1K3iWPRs
>>866
すいません
言葉を省略しました
今作ってる環境はunity5です
さっき言ったドローコールはunity5のbatchesの事です
これは実質的に同じものだと聞いたのでドローコールと書きました
0868名前は開発中のものです。2015/06/07(日) 14:53:13.99ID:1K3iWPRs
ああすいません
完全に勘違いしてました
ドローコールが増えててたのはキャラクターにダメージを与えた後の
爆発エフェクトが原因でした
エフェクトをオフにしたらまったくドローコールに変化がなかったです
どうもすいません
ボケてました〜
0869名前は開発中のものです。2015/06/07(日) 15:02:41.61ID:u8t3nFDP
SRPGを作る場合、攻撃を食らう処理ってどう設計するのがいいのかな

格闘ゲームみたいに攻撃判定ボックスと食らい判定ボックスを作って
剣につけた攻撃判定が相手の食らい判定ボックスに接触したらダメージ受ける、っていうのと
ボックスを使わず食らう側が攻撃側のアニメか攻撃フラグみたいなのを見にいって、
攻撃側が剣を振り下ろすアニメだったらダメージだけ入れる、っていう2つを考えたんだけど
0870名前は開発中のものです。2015/06/07(日) 15:35:24.61ID:QONkVbLK
え?それはARPGとかじゃなくて?w
SRPGなら単にダメージ関数呼ぶとかでいいんじゃね。
UnityだったらSendMessage()でやるとかがよくあるパターンだとは思う。
0871名前は開発中のものです。2015/06/07(日) 15:44:14.73ID:u8t3nFDP
>>870
申し訳ないですが、もうちょっと具体的なフロー教えてもらえると嬉しいです
0872名前は開発中のものです。2015/06/07(日) 16:01:44.41ID:13W8YjeC
>>869
質問の意味がわからん
SRPGならグラフィックの判定云々はいらないだろ
0873名前は開発中のものです。2015/06/07(日) 16:24:15.19ID:5aXktRSL
RPGとか作ろうと思ったら一度は考えると思うけどなこれ
0874名前は開発中のものです。2015/06/07(日) 16:28:11.17ID:QuPIwIBV
いらないね、リアルタイム要素が無くても良いからね。
0875名前は開発中のものです。2015/06/07(日) 16:50:13.74ID:QONkVbLK
>>871
別にフローって程の話じゃなくて
攻撃するって決定したなら
targetUnit.SendMessage("ApplyDamage",attackPower);
とか
targetUnit.GetComponent<StatusScript>().ApplyDamage(attackPower);
とかやってやりゃいいんじゃね、って話。
どのユニットを攻撃するかは決定されてるんだから当たり判定とかする必要ないでしょ。

まぁ実際SRPGとか作るんだったらそんな素朴な仕組みで済むわけねぇ、
って気もするけどねw
0876名前は開発中のものです。2015/06/07(日) 17:02:55.50ID:u8t3nFDP
>>875
ありがとうございます!
0877名前は開発中のものです。2015/06/07(日) 20:47:28.12ID:akexgdFi
Unity5に対応したUnity Remoteはない?
0878名前は開発中のものです。2015/06/07(日) 20:58:13.74ID:4PYZyh53
対応してるだろ
0879名前は開発中のものです。2015/06/08(月) 00:42:28.56ID:aSLNqENz
Unity Remote4でいけるのか?
軽く試したら動かなかったし、Unity5に対応してるって表記もなかったから聞いてみた
0880名前は開発中のものです。2015/06/08(月) 11:04:20.38ID:kZkekiRh
terrainってキューブを押し出したり出来るようにならないですか?
出来たらすごく便利そうなのですが…
0881名前は開発中のものです。2015/06/08(月) 11:08:57.77ID:YIWblpIx
基本的に無理。terrainがどういう仕組みのものか理解すればすぐわかることだが
0882名前は開発中のものです。2015/06/08(月) 12:05:31.41ID:BQpnpSLF
UGUIのinput field ってiOSだと虫眼鏡が出ないのですか?
カーソルを移動できなくて困ってます。
0883名前は開発中のものです。2015/06/08(月) 12:47:34.79ID:iuPArvFT
spriteRendererとmeshRendererの違い・・・というか使い分けが分からない・・・
基本的な使い分け方ってありますか?
0884名前は開発中のものです。2015/06/08(月) 13:02:08.24ID:dT5E5UEQ
ゲームでspriteというと板状の物でmeshというと3Dモデルのような
立体物の頂点の集合体というイメージ
0885名前は開発中のものです。2015/06/08(月) 13:18:57.72ID:waI6fIS8
これおもしろいの?
https://twitter.com/kohnosuke/status/601940455366889472
0886名前は開発中のものです。2015/06/08(月) 13:34:06.08ID:iuPArvFT
>>884
あ〜、なるほど!
ありがとうございました
0887名前は開発中のものです。2015/06/08(月) 13:37:28.96ID:jmOEGYhf
あっ信じたww
0888名前は開発中のものです。2015/06/08(月) 20:12:37.93ID:gWpCM+TJ
>>879
いけるよ
つーか そもそもそんなの自分でやれば聞くまでもなく終わりじゃね?

ここの連中はあんまり役には立たないがw
0889名前は開発中のものです。2015/06/08(月) 20:21:49.46ID:dC1EXGpl
試したと言ってるのに自分でやれば〜とか言っちゃうお前もな
0890名前は開発中のものです。2015/06/08(月) 20:23:21.67ID:aSLNqENz
>>888
ありがとう
一度やってみて失敗したから、つまらないところで自分がミスしてるか、実は対応されてないのか判断つかなくてね
対応してないとも書かれてないが、対応してるっていう情報もなかったから聞いてみた
さらっと答えてもらえるの本当に助かります
初めてAndroid5.0.2使ってみたし、どこが原因か掴めなくて困ってた
0891名前は開発中のものです。2015/06/08(月) 21:03:10.96ID:zGnPuvCD
・端末を繋ぎなおす
・Unityを立ち上げなおす
何度かやってればUnityRemote4がちゃんと動くよ
0892名前は開発中のものです。2015/06/08(月) 22:25:05.21ID:MMeNg1NY
unity5でMonoDevelop使いながらC#を学んでるんですが
参考書に書いてあるConsole.Write()やConsole.Read()が上手く使えず、
Console.Write()はDebug.Log()で代用出来ましたがConsole.Read()の代わりに
なる関数が見つからないので有れば教えてもらえないでしょうか?
Input.inputStringやOnGUI()の中でEvent.keyCodeを使うのは扱いが面倒で、
もっとこうサクッと無いもんかと
0893名前は開発中のものです。2015/06/08(月) 22:32:38.40ID:KIneyryI
Unityでゲームと関係ない勉強をするのはやめた方がいい
Console.Read()がゲームのどんな場面で活躍するか想像してみろ
0894名前は開発中のものです。2015/06/08(月) 22:38:09.46ID:xr0aE/Nq
どうやってもinput fieldのキーボードからdone cancel のボタンが消せない。
これも、assetを買うしかないのか。
08958922015/06/08(月) 22:41:52.70ID:MMeNg1NY
Console.Read()だと一文字入力なんで使い道あんま無いですね・・
質問が悪かったです、文字列や数値のキーボード入力に便利な関数が無いか探しています
0896名前は開発中のものです。2015/06/08(月) 22:49:32.84ID:f6VUMDUu
VSのフルバージョンがタダで使える時代になんでわざわざそんなことするんだ
0897名前は開発中のものです。2015/06/08(月) 22:55:52.26ID:KIneyryI
文字の入力/取得ならUnityに入力ウインドウを作る機能がある
Unityでゲームを作りながら勉強するかUnityを忘れてC#の勉強をするかどちらかにしろ
08988922015/06/08(月) 23:02:36.27ID:MMeNg1NY
>>896
初心者故にUnityバンドルのMonoを素直に使い続けて慣れちゃったからですかね・・
VSforUnityも今タダですもんね
0899名前は開発中のものです。2015/06/08(月) 23:07:13.85ID:xr0aE/Nq
ディバインゲートも友達の番号検索の所のキーボード入力、done cancel だわ。
もうあきらめたわ。
0900名前は開発中のものです。2015/06/08(月) 23:25:50.04ID:xr0aE/Nq
iOSの虫眼鏡出したかったら、asset購入するしないぽいな。つくる技術もないし。
0901名前は開発中のものです。2015/06/09(火) 14:36:05.32ID:siB026JJ
うーむ
上手くいかない
webglビルドして一応出力できたのだがそれをブラウザで開いてもプログレスバー
の画面から一向に変化がない
試しにサーバにアップしてやってみてもやっぱり同じ画面でゲーム本体が
起動しない
webglビルドやってる人ちゃんとゲーム起動できてますか?
0902名前は開発中のものです。2015/06/09(火) 15:49:29.36ID:W1r5MKhq
>>901
firefoxぐらいでしかまともに動かないよ
0903名前は開発中のものです。2015/06/09(火) 15:53:18.92ID:siB026JJ
>>902
その事はググれば出てきたのだが俺がやったらfirefoxでも全くゲームが起動しない
どういうことなんだろうか
そもそもぐぐってもunityでwebglやってる人はあまり引っかからない
ひょっとしてこの分野はまだ時期尚早なんだろうか
ビルド設定の所にプレビューとか書いてあるし
0904名前は開発中のものです。2015/06/09(火) 17:02:32.16ID:jB1qVXwq
俺なんかそもそもWebGLでのビルドが出来ない
他は全部出来るんだが
0905名前は開発中のものです。2015/06/09(火) 17:26:23.79ID:siB026JJ
>>904
俺もビルドが出来なかった
それまでは設定を実行速度ファースト、ビルド速度ロウ
でやってたけどそれじゃまったくビルド出来なかったので
実行速度ロウ、ビルド速度ファーストの設定で
試しにやってみたらビルド出来た
どうもこのunityのwebgl対応って話題になってたけど
まだまだ使い物になるレベルではないようだ
0906名前は開発中のものです。2015/06/09(火) 17:33:05.90ID:W1r5MKhq
>>905
自分は特に問題なくビルドできてたんで使ってる機能に依存してるんじゃないかと思うね
ただ実用的かって聞かれたらfirefox以外ほぼ全滅(safari,chrome,ie)だったのでなんとも言えない
ちなみにビルド環境はMac版(Windows版は64bit版入れないとだめらしいので)
0907名前は開発中のものです。2015/06/09(火) 17:40:19.29ID:siB026JJ
>>906
俺もMacなんだけどね
2010年版のMacminiでスペックは低いけども
アセットも変わった物は一つも使ってない
爆破エフェクトのを一個入れてるくらいで
何がまずいのかな
0908名前は開発中のものです。2015/06/09(火) 17:52:44.71ID:jB1qVXwq
マジか
WinでGLビルドって64bitじゃないとダメなのね
じゃあ俺はそれでエラー吐いてるわ
0909名前は開発中のものです。2015/06/09(火) 17:58:38.23ID:W1r5MKhq
>>907
自分買ったアセットのテスト(マップね)でやってみただけなのでUIとか特に入れる前だからかも(UGUIじゃなくてレガシーのGUIのまま)
どの機能がダメなのかは把握してないです
なお、自分のMacもAirのチープ環境だぜ
Winを64ビット環境にしたいけど予算がグラボに化けるのでどもならん

>>908
マジだぜ、ここの一つ前の過去ログに書いてあって、ぐぬぬってなった。
0910名前は開発中のものです。2015/06/10(水) 01:25:57.69ID:j6flma8y
透過PNGをプロジェクトにドラッグしてインポートするとプレビューやアイコンが
真っ黒で表示されるようになったけど何が原因ですかね?
以前はちゃんと真っ黒でなく表示されてたと思うんですが
0911名前は開発中のものです。2015/06/10(水) 01:44:26.41ID:hrgXNaoL
Input field 使わない方が良いな
消せない

textで十分足りる
0912名前は開発中のものです。2015/06/10(水) 04:54:14.85ID:VZG8lS4L
プロジェクト管理はやっぱgitでやってるの?
0913名前は開発中のものです。2015/06/10(水) 05:50:18.04ID:bAHz+jSD
そうだよ
0914名前は開発中のものです。2015/06/10(水) 09:41:24.59ID:d5dSgTVd
過疎りすぎ
unityやるひと少ないのかな
0915名前は開発中のものです。2015/06/10(水) 09:45:16.03ID:J+3G96eD
そもそもUnityのメインコミュニティはここじゃないし
0916名前は開発中のものです。2015/06/10(水) 10:41:23.11ID:d5dSgTVd
そりゃそうだけど、あまり広がってないな。
やっと使い慣れてきたが、割と癖があって色々知ってないと難しいところもあると感じてる。
0917名前は開発中のものです。2015/06/10(水) 11:13:11.16ID:VZG8lS4L
>>913
gitクライアントってunityと同時にずっと起動してる?
0918名前は開発中のものです。2015/06/10(水) 11:17:55.84ID:bAHz+jSD
何故そんなことをする必要があるんだ…俺がしってるGitとは別のものなのか?
一日の作業が終わったらやったことコメントしてコミットするだけだろ…
0919名前は開発中のものです。2015/06/10(水) 11:46:05.84ID:VZG8lS4L
1日の作業を2つ以上ブランド切って進めたりしないの?
0920名前は開発中のものです。2015/06/10(水) 11:46:22.08ID:VZG8lS4L
Xブランド
○ブランチ
0921名前は開発中のものです。2015/06/10(水) 11:52:33.67ID:bAHz+jSD
処理で迷った時はありえない訳じゃないと思うけどそんな頻繁にやる?
いや別に悪いわけじゃないから必要に応じてやるときはやるでいいとは思うんだけどさw
0922名前は開発中のものです。2015/06/10(水) 12:06:28.57ID:d5dSgTVd
>>917
sourcetreeで検索
0923名前は開発中のものです。2015/06/10(水) 12:09:44.04ID:VZG8lS4L
>>921
すまん、確かにそうだなw
必要があれば起動してブランチ切って閉じればいいだけか・・・

>>922
昨日それ知って(というか昨日git知って)徹夜で弄ってる
0924名前は開発中のものです。2015/06/10(水) 16:39:01.40ID:DPM6+qhr
Manual Activation したいのですが、
ネット環境切断しても aif 作るためのダイアログが出ません。
メニューなどから作れないでしょうか。

OSX 10.9
Unity 4.6
0925名前は開発中のものです。2015/06/11(木) 00:14:39.05ID:kgj0JjTF
またダウンロードしたが。
制作しようにもキャラやらなんやらですすんでねー。
0926名前は開発中のものです。2015/06/11(木) 00:44:02.12ID:BquZSw1+
>>925
ギャルゲならキャラありきかもしらんが
ゲームシステムありきで作るならキャラクタなんざAssetStoreから無料のひろってとりあえず作ればよかろうに
0927名前は開発中のものです。2015/06/11(木) 08:49:22.12ID:e1btvZMr
とは言え自前で用意したいもんだよ。
0928名前は開発中のものです。2015/06/11(木) 11:41:48.99ID:09ITQIR6
その手の言い訳してる内は一歩も進めないからな
フリー素材使って完成させてから自分で描くなり人に頼むなりすればいい
0929名前は開発中のものです。2015/06/11(木) 11:47:44.97ID:8ZHfQKuA
一歩も進めない結果8年かけてプログラミングと絵と音楽と3dができるようになってきたけどまだゲーム作ってない
0930名前は開発中のものです。2015/06/11(木) 12:07:17.94ID:gW5Gw3ZX
順序としてはまず素材が作れるようになったほうがいい
プログラマーやデザイナーになると素材作る能力が成長しなくなるので詰む
0931名前は開発中のものです。2015/06/11(木) 12:27:53.29ID:h2BC4VRT
でもそれって一人でやってる場合だよね・・・
デザイナーとかと組めばいいじゃん
0932名前は開発中のものです。2015/06/11(木) 12:37:58.46ID:gW5Gw3ZX
組めるんだったら組めばいいさね
組めないんなら詰むよって話
0933名前は開発中のものです。2015/06/11(木) 13:52:57.61ID:Kp77RUO4
>>929
100%ネタだと思うけどそんな長期間やってたらモチベが死ぬだろ
0934名前は開発中のものです。2015/06/11(木) 14:03:18.35ID:MrWQbCni
死んでるから8年かかったとも言える
0935名前は開発中のものです。2015/06/11(木) 14:15:15.04ID:8ZHfQKuA
素材は作れるに越したことはないがある程度見る目が養われていればよほどの超人でない限り分業したほうが確実に質が良くなるな
特に絵と音楽はプロレベルの人材が無数に転がってるし上手くやれば無料で使えるし自分でやるのは無駄

>>929
もはや趣味だから練習するのにモチベはいらない
ゲームを作るモチベという意味なら基本死んでるけど面白いゲームをやるたびにちょっと復活する
0936名前は開発中のものです。2015/06/11(木) 14:33:51.84ID:H5D7NBog
開発効率を上げるため、フレームワークを作ろうと思ってたらいつの間にか自作スクリプト言語にまで手を出してたでござる。
0937名前は開発中のものです。2015/06/11(木) 14:39:47.47ID:gW5Gw3ZX
モチベーションには4つあると思う
1、作る行為が楽しい。
2、作った結果で競う競争意識。
3、今まで見たことも聞いたこともないものを作る創造性
4、見返りや報酬を求めて作る。収益性。
4つのモチベが減ったり増えたりするのがゲーム開発というゲーム。異論は認める。がんばれ。
0938名前は開発中のものです。2015/06/11(木) 20:39:07.36ID:Kp77RUO4
5、完成したゲームで遊ぶところを妄想する

も追加で
0939名前は開発中のものです。2015/06/11(木) 21:20:31.86ID:Bstu9tzk
Unity5になってからtransform.Translateさせるだけでもカクつくようになったんですがどうすればいいんですか。
0940名前は開発中のものです。2015/06/12(金) 00:10:30.85ID:yyAtXoS2
MonoDevelopが毎回モニターいっぱいに表示されて困っています。タスクバーすら表示されません。
0941名前は開発中のものです。2015/06/12(金) 01:09:04.65ID:mbqz7iSU
@シーン1でTimeクラスを使ったスクリプトAを走らせる

Aシーン2に遷移するとスクリプトAは使ってないが、deltaTime使った別のスクリプトBを動かそうとすると

Bシーン1で動いた時間が加算された状態になっており、スクリプトBの挙動がズレてしまいます。

どのような対策を取ったらよいでしょうか?
0942名前は開発中のものです。2015/06/12(金) 01:19:47.02ID:hWrk7D/h
こりゃまたかなりのエスパー案件だなぁ…
正直何を言ってるのか全くわからんレベル。
0943名前は開発中のものです。2015/06/12(金) 01:25:58.19ID:Qx6QZuPl
スクリプトAかスクリプトBが悪いんだと思います
それ以上のことは言えません
0944名前は開発中のものです。2015/06/12(金) 01:44:04.12ID:2yEcBp3P
シーン読み込みにかかった時間がdeltaTimeに加算されてるってことじゃね
遷移する前にTime.timeScaleを0にしてみるとかどうだろう
0945名前は開発中のものです。2015/06/12(金) 01:49:02.37ID:mbqz7iSU
伝わりにくくてすいません
シーン1で演出に10秒使って
シーン2に遷移

シーン2で15秒の演出としようとしたところ
シーン2の演出が5秒だけになっていた
と言った感じになります
0946名前は開発中のものです。2015/06/12(金) 02:19:38.24ID:hWrk7D/h
100億ドルの大作ならいざ知らずUnityでロードに10秒かかるから、とは
思えないからその10秒を数えちゃってるってことではあるんだろうが。
ただいずれにせよそれはUnityの問題じゃなくて書いたプログラムのバグだから
そのプログラムを見る以外ねぇよ
0947名前は開発中のものです。2015/06/12(金) 03:10:47.36ID:51BuC/sy
とても初歩的な質問で申し訳ないんですが、アニメーションパラメータがスクリプトで動作しません
関係しそうなところ以外省きますが

private Animator animator;

void Start(){
animator = GetComponent<Animator>();
}
void Update(){
animator.SetBool("A",true);
}

Aがtrueの時アニメーションを変更するように組んでいるのですが、変更されずうまくいきません
どこか間違っていたら、ご教授いただけたら光栄です
或いはAnimator Controllerの設定自体が間違っているのかもしれませんが
0948名前は開発中のものです。2015/06/12(金) 03:20:08.65ID:hWrk7D/h
そこに書いてある式に誤りはない。
それだと毎フレームAをtrueにセットし続けるが多分それはわかっているんだろ?
まぁAnimator内部の設定が間違えている、もしくはAのつづりを間違えている、とか
そんなあたりだろうな。
0949名前は開発中のものです。2015/06/12(金) 07:27:16.81ID:51BuC/sy
>>948
ありがとうございます
内部の設定が間違ってるみたいですね
Entryというステートが良く分かってなくて...、これは無視していいんですか?
0950名前は開発中のものです。2015/06/12(金) 08:41:04.85ID:yT7Nup/Q
>>939
追従するカメラをFixedUpdateで動かすとカクつきが抑えられました
パソコンのファンが鳴り響くようになりましたが・・・

rigidBodyはFixedUpdateで動かしたほうがいいと先ほど知りました
FixedUpdateで動かしたほうがいい場合と動かさないほうがいい場合を教えていただけませんか

Unity4のときはUpdateでもカクつかなかったのは何故なんでしょうね
0951sage2015/06/12(金) 11:33:05.44ID:rdo3cS8y
主人公キャラが一部の壁にめり込んでしまいます。
特に斜め移動(↑と左右キー同時押し)時に発生しやすいです。

rigidbody.position = new Vector3
(
Mathf.Clamp (rigidbody.position.x, xMin, xMax),
Mathf.Clamp (rigidbody.position.y, yMin, yMax),
Mathf.Clamp (rigidbody.position.z, zMin, zMax)
);

以上のようにRigidbody.positionで強制的に正しい位置に戻したいのですが
・キーを押して移動している間 → 壁にめり込み続ける
・キーを離す → 正しい位置に戻る

という動きをし続けます

スクリプトは公式のspace shooterのものをアレンジしたのですが、より良い方法で
壁にめり込まないようにできれば教えて頂けませんか
0952名前は開発中のものです。2015/06/12(金) 11:53:07.30ID:hWrk7D/h
>>949
Entryはステートマシンに入ったときに分岐させるためのステート、じゃなかったか?

>>950
RigidBodyって何かっていうと
物理エンジンにしたがって自動でTransformを動かすコンポーネント、
な訳だがこれはFixedUpdate()の周期で動作する。
だから物理エンジンがらみのものはFixedUpdate()に書く。

カクつかなかった理由はわからん。カクツキが生じる理由は
複数考えられるので処理を全部見なければ特定しようがない。

>>951
そもそもMinMaxの設定値がキャラの大きさとか考慮しきれてないのではないか
あとUpdate()はFixedUpdate()と違った周期で実行されていて壁へのめりこみを
自動で押し返す機能を持ったRigidBodyはFixedUpdate()の周期で実行されているので
FixedUpdate()でRigidBodyが押し返す→Update()で壁にめり込ませている
ということに恐らくなってる。
正確にはRigidBodyの処理はFixedUpdate()の直後に実行されているはず
http://docs.unity3d.com/Manual/ExecutionOrder.html
0953名前は開発中のものです。2015/06/12(金) 12:19:08.13ID:ESSmrvBP
今日はUnityにも通じているA級エスパーさんが頑張ってくれているとはいえ
質問は他人にも内容が理解できた方が好ましいから質問者は気をつけるようにな
0954名前は開発中のものです。2015/06/12(金) 13:36:16.27ID:p4RcDMh7
>>945ですが
状態マシンを使って、タイトルシーンで
public class Title : State{
float timer; float wait = 2.0f;
public StateManager manager;
pubic Title(StateManager SM){
manager = SM;
}
public void StateUpdate{
timer += Time.deltaTime:
if(timer >= wait){
TitleAction();
}
if(Input.anykey){
Application.Loadlevel(”Play”);
Time.timeScale = 1;
manager.Switch(new Play(manager) )
}
}
と言った感じでするとプレイシーンで
public class Play : State{
publc Transform moviePoint;
publc Transform startPoint;
public float speed = 1.0f;
public StateManager manager;
pubic Play(StateManager SM){
manager = SM;
}
void StateUpdate(){
transform.position = Vector3.Lerp(moviePoint.position, startPoint.position, Time.deltaTime * speed)
}}と言った物ですが、Lerpが途中の位置から始まってしまう挙動となってます
0955名前は開発中のものです。2015/06/12(金) 13:45:43.88ID:6d9MVPBA
お前のオツムが弱くて理解出来なかったからって
悔しがんなよ
0956名前は開発中のものです。2015/06/12(金) 13:46:13.08ID:/NdS7CrW
>>950
Updateは負荷によって間引かれる(フレーム落ち)が、FixedUpdateは基本的に間引かれない
ファンが回り始めたということはFixedUpdateに相当重い処理を入れたんだろう
フレーム落ちしてもdeltaTimeで補完できる部分はUpdateに分割したほうがいいよ
0957名前は開発中のものです。2015/06/12(金) 14:37:36.40ID:Qx6QZuPl
>>954
>transform.position = Vector3.Lerp(moviePoint.position, startPoint.position, Time.deltaTime * speed)
Lerpの使い方が悪い。第三引数で与える値は補間係数なので時間経過で0から1に変化させるようにする
ついで言うと第一引数が開始位置で第二の方が目的位置だから逆になってるよ
0958名前は開発中のものです。2015/06/12(金) 14:51:25.35ID:hWrk7D/h
>>954
15秒かけたいならこうだろう。最初の方は多分関係ない。

public class Play : State{
publc Transform moviePoint;
publc Transform startPoint;
public float speed = 15.0f;
float timePass=0f;
public StateManager manager;
pubic Play(StateManager SM){
manager = SM;
}
void StateUpdate(){
timePass+=Time.deltaTime;
transform.position = Vector3.Lerp(moviePoint.position, startPoint.position, timePass/speed);
}
0959名前は開発中のものです。2015/06/12(金) 17:24:51.57ID:yT7Nup/Q
>>956
キャラを追いかけるカメラはこんな感じの処理です。
もしかしてSlerpってすごい重いのですか?
キャラはまっすぐ進ませてるはずなのに横にガクガク動いて見えるんですよねぇ


public float distance = 5.0f;//被写体との距離
public float height = 3.0f;//被写体との高さ
void freeCamera(){
//start freeCamera
// Transform target = GameObject.FindWithTag("Player").transform;//被写体
// float distance = 5.0f;//被写体との距離
// float height = 3.0f;//被写体との高さ
// float heightDamping = 2.0f;//大きくするとカメラがはやくついてくる
// float rotationDamping = 3.0f;//大きくするとカメラがはやくついてくる
float smoothTime = 5f;
if (!target)return;//ターゲットがいないときはなにもしない
Vector3 basePosition = target.position;
basePosition -=target.forward*distance;
basePosition +=target.up*height;
// transform.position = Vector3.Slerp(transform.position,basePosition,smoothTime * Time.deltaTime);
transform.position = Vector3.Lerp(transform.position,basePosition,smoothTime*Time.deltaTime);
// transform.position = Vector3.Lerp(transform.position,basePosition,smoothTime*Time.deltaTime);
//Vector3 targetVelocity = target.GetComponent<Rigidbody> ().velocity;
//Vector3 targetVelocity = target.transform.forward;
Quaternion wantedRotation = Quaternion.LookRotation(target.position-transform.position);
// transform.rotation = Quaternion.Slerp(transform.rotation,wantedRotation,smoothTime*Time.deltaTime);
transform.rotation = Quaternion.Lerp(transform.rotation,wantedRotation,smoothTime*Time.deltaTime);
//end freeCamera
}
0960名前は開発中のものです。2015/06/12(金) 17:32:20.74ID:hWrk7D/h
>>959
そういうカメラはLateUpdate()でやるべき、というのがUnityでの作法
0961名前は開発中のものです。2015/06/12(金) 18:01:24.03ID:ESSmrvBP
>>959
> ,smoothTime*Time.deltaTime);
これの意図がイマイチ判らん
5.0f/Time.deltaTime になるわけだけどdeltaTimeは前フレームからの経過時間だから
補間の係数Tに使えるものじゃなくね
fixedupdateで安定したのは試してないけど定期的に呼ばれるからdeltaTimeのブレがなくて
変な数値で固定できていたからでは?

そもそもどういう挙動を意図してるかどうかわからんけど、それをアルゴリズム化できていないという
コーディング能力の問題じゃないですかねこれ
0962名前は開発中のものです。2015/06/12(金) 18:15:26.45ID:yT7Nup/Q
>>961
キャラクター側
private Rigidbody rigid;
private int sppedForce = 10;
public float maxSpeed = 20;
private GameObject player;
// Use this for initialization
void Start () {
//start Start
rigid = GetComponent<Rigidbody>();
player = GameObject.FindWithTag ("Player");
//end Start
}
void FixedUpdate() {
//start FixedUpdate
if(rigid.velocity.magnitude<maxSpeed && !Input.GetKey("space") )rigid.AddForce(transform.forward*sppedForce);
//end FixedUpdate
}
void Update () {
//start Update
float smoothTime = 5f;
Vector3 wantedVector;
wantedVector = player.transform.position-transform.position;/*操作できるやつ= new Vector3(Input.GetAxis ("Horizontal"),0,1);*/
Quaternion wantedRotation = Quaternion.LookRotation(wantedVector);
//transform.rotation = Quaternion.Slerp(transform.rotation,wantedRotation,smoothTime * Time.deltaTime);
transform.rotation = Quaternion.Lerp(transform.rotation,wantedRotation,smoothTime * Time.deltaTime);
//end Update
}

公式のsmoothCameraを参考にしていましたがおかしかったのですか。
全オブジェクトのUpdateのあとにLateUpdateが呼び出されるのでfreeCameraをLateで呼び出せばいいんですよね。
0963名前は開発中のものです。2015/06/12(金) 18:16:28.69ID:yT7Nup/Q
ageちゃったよ・・・ごめんなさい
レス数が950を超えています。1000を超えると書き込みができなくなります。