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

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

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2014/12/09(火) 19:29:53.11ID:x9Izo6T5
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質問スレッド13
http://peace.2ch.net/test/read.cgi/gamedev/1414819294/

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

■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←スクリプトのエラー番号をこれで検索すると原因が日本語で出てきます。
注意事項:アセットおじさんは優しく愛でましょう
0239名前は開発中のものです。2014/12/17(水) 22:07:58.55ID:mbFtNJxC
AIのnavigationをつくろうとするとbakeのところに
this is only available in the pro versionとあるので
これはフリーでは使えないのでしょうか
ユニティちゃんでゲームを作ろうに書いてある順序どおりにやっているのですけど
もう悩み続けググって6時間くらい経ちました
問い合わせしたほうがいいでしょうか?
0240名前は開発中のものです。2014/12/17(水) 22:09:01.96ID:mbFtNJxC
一番下のところにBakeと書いてあり
それでAIを作ることができました
お騒がせしすみませんでした
0241名前は開発中のものです。2014/12/17(水) 22:26:06.79ID:mbFtNJxC
こ、こんな下の分かりずらいところに書いてあるとは
笑止千万
unityも駄目GUIですな
0242名前は開発中のものです。2014/12/17(水) 22:49:36.26ID:V/EzfgCe
>>238
アイテムつかんだらScrollRectコンポーネントをディアクティブにするとか
で、ドラッグ操作が終わったらアクティブに戻す
0243名前は開発中のものです。2014/12/17(水) 23:22:46.03ID:3xXG8kbw
ブラゲでunity必要なんだがインストールされないんだが
ブラウザはIE11でFFなら起動する
どうしたらいいの
0244名前は開発中のものです。2014/12/18(木) 00:48:40.73ID:tsvx7R9N
新しくパソコンを買うと良い。サーフェスプロ3辺り
0245名前は開発中のものです。2014/12/18(木) 00:55:46.81ID:Vr2/gAVp
>>235
ほかにメモリを食うアプリを起動したんじゃない?
0246名前は開発中のものです。2014/12/18(木) 01:26:07.90ID:YER/Q7x/
>>242
なるほど、その手があったか!という感じです。
ありがとうございます
0247名前は開発中のものです。2014/12/18(木) 03:49:38.47ID:4exkQJJF
>>237
できるよ。この辺。
ttp://en.wikibooks.org/wiki/Cg_Programming/Unity/Shading_in_World_Space
0248名前は開発中のものです。2014/12/18(木) 08:03:54.03ID:xdzvvI7m
>>245
バッググラウンドにあるアプリを当該のアプリのみにしても同じ症状なんです。
マルチタスクボタン?からアプリを選択すれば復帰できるのですが、
ホーム画面のアイコンタップが再起動に設定されているような動きです。
0249名前は開発中のものです。2014/12/18(木) 09:13:13.15ID:d57VeRml
>>248
アセットをかえば解決すると思いますけど
0250名前は開発中のものです。2014/12/18(木) 10:35:37.61ID:9Nb7FQvi
>>247
ありがとうございます。なんとかなりそうです。
0251名前は開発中のものです。2014/12/18(木) 13:28:16.55ID:fIUeJ0NF
OnGUI内で呼んだGUI.DrawTextureを、NGUIで作成したUIの「後ろに」表示する事って可能なんでしょうか?
NGUIカメラとOnGUI用カメラ2つを使ってますが、Depthいじっても何してもGUI.DrawTextureがNGUIの手前に来ちゃうの。
0252名前は開発中のものです。2014/12/18(木) 13:49:31.94ID:7SFFwvJy
3種類の形のブロックと6種類のマテリアルからランダムで組み合わせた物を生成するのを作っていて
ドローコールを減らそうと思い
Block_c = Instantiate(Block, transform.position, transform.rotation);
Block_c.renderer.material = Instantiate(Materials[MaterialNo]);
という形で実行して同じマテリアルが適用されたものが生成されてもドローコールが増えてしまいます
変数は
var Block : GameObject;
var Block_c : GameObject;
var Materials : Material[] = new Material[6];
var MaterialNo : int;
と定義して他のところで代入しています
マテリアルにはテクスチャーは使っていません
BlockのプレハブのマテリアルはSizeを0にしたりnoneにしても変わりませんでいた
あとBlock_c.renderer.material = Instantiate(Resources.Load("hoge"));
等も試したのですがやはり変わりませんでした

調べた限りでは上記の感じでマテリアルを設定すればドローコールを減らせるとあったのですが
どういったことが原因として考えられるのでしょうか?
0253名前は開発中のものです。2014/12/18(木) 13:53:28.86ID:dv3wOmpN
>>252
ドローコールを減らすには、アセットをかえばいいですよ。素晴らしいアセットがいっぱいです
0254名前は開発中のものです。2014/12/18(木) 13:55:55.73ID:RS54/gKM
>>252
MaterialをInstantiateしてるから内部でnewされてるんじゃないの?
Materials[MaterialNo]ってprefabである必要あるの?
0255名前は開発中のものです。2014/12/18(木) 14:15:55.05ID:4exkQJJF
>>252
この辺の下の方見るとむしろそのやり方はドローコールを増やすやり方とかいてあるが。
ttp://tokyo.supersoftware.co.jp/code/1189


同じマテリアルを使うとドローコールが減る、の話は要するにダイナミックバッチングで減るが
ダイナミックバッチングをどのように効かすかによってドローコール数は変化する、
のではないか、という話をこの辺でしている。
ttp://qiita.com/kuuki_yomenaio/items/eaea133479bb8be96870

あとこの辺とか
ttp://tsubakit1.hateblo.jp/entry/20130509/1368110060
0256名前は開発中のものです。2014/12/18(木) 14:58:10.03ID:dv3wOmpN
スクリプトで四苦八苦するよりアセットをかうほうがいろんないみでいいですよ
0257名前は開発中のものです。2014/12/18(木) 19:21:08.27ID:2s9UeWNF
>>254>>255ありがとうございます。
http://tokyo.supersoftware.co.jp/code/1189
は見てたのですが変な勘違いをしていたようです

Block_c.renderer.material = Resources.Load("hoge");
に変えてやってみたのですがドローコールは変わりませんでした

もう一回調べながらやってみます
0258名前は開発中のものです。2014/12/18(木) 19:51:09.92ID:4exkQJJF
上の二つ目の記事を読んでもらえれば判るんだが
同じマテリアルを使ってもそれだけではドローコールは減らないんだ。
同じマテリアルのものがどれだけ連続したレンダーオーダーに並んでくれるかが問題で。
2Dならソーティングレイヤーである程度コントロール可能なはずだし
上の記事の例では生成の順番だけである程度コントロールできている。
3Dの場合は半透明オブジェクトの扱いとかカメラからのZの問題に縛られる場合があるので
完全なコントロールは無理な気はする。
エディター拡張でメッシュレンダラのソーティングレイヤーを実装している例はある
ttp://forum.unity3d.com/threads/drawing-order-of-meshes-and-sprites.212006/
0259名前は開発中のものです。2014/12/18(木) 19:53:25.11ID:t6T/zTSD
ギズモを表示させていて Draw Call 盛られまくりんぐという落ちじゃないだろうね。
0260名前は開発中のものです。2014/12/18(木) 20:20:21.63ID:RS54/gKM
記事は同じマテリアルでも描画順序が異なっちゃうと同じバッチに入らない事を示してる
あとResources.Loadなんぞしたら同じマテリアル扱いにならないよ(plugins書いてポインタ渡して表示してみると解る)
0261名前は開発中のものです。2014/12/19(金) 09:50:43.25ID:FHWbUxpT
日本語名称のモデル(例:あいうえお.fbx)のオプションで
マテリアルの命名規則(Material Naming)にて
「Model Name + Model’s Material」を選択した場合、
作成されるマテリアル名が文字化けしてしまい、
正しくマテリアルをインポートできなくて困っています。

なにか、回避方法ないでしょうか?
(エディタ自体の文字コードを変更するとか。。。)
なお、日本語名称のfbxが大量にある為、fbxファイル名を英字に変更する対処方法は難しいです
0262名前は開発中のものです。2014/12/19(金) 10:00:10.40ID:sDqY08SL
ただの馬鹿じゃねーかw
0263名前は開発中のものです。2014/12/19(金) 10:06:35.37ID:5l/16tmr
>>261
そのような問題はアセットを買えば簡単に解決すると思います。
0264名前は開発中のものです。2014/12/19(金) 10:07:20.41ID:D5yP9UIE
>>261
いや、それ絶対ファイルリネームした方がいいってw
ファイルのリネームが難しいって何だよw意味がわからねぇよw
1万くらいあってもどうってことないだろw
0265名前は開発中のものです。2014/12/19(金) 10:14:31.23ID:D5yP9UIE
ちな、Unityはパスに2バイト文字含まれてるだけでこけるので
その辺でどうにかなるとかは基本的にありえないと思ったほうがいい。
0266名前は開発中のものです。2014/12/19(金) 10:40:53.12ID:FHWbUxpT
>>264
ファイル名に意味があります。
fbxの動的な管理アプリケーションなので、ファイル名を変えたくない。
画面上にfbxのファイル名を表示するので連番や英字だと可読性が悪い。

というか、現状だけどうにかしたいわけでなく、根本的に解決できるなら解決したいと思った次第です。
0267名前は開発中のものです。2014/12/19(金) 10:46:01.79ID:nCmP1da4
Androidでリズムゲーム作ってるんですが
どうしてもタップした瞬間に音が鳴ってくれません
気にすれば気になる程度遅れてしまいます。

SEを受け持つクラスを作って、別のオブジェクトのコライダーがタップされたらSendMessageしているんですが
0268名前は開発中のものです。2014/12/19(金) 11:17:19.69ID:0ThumEdf
基本的なことだけど波形の頭がって事は
0269名前は開発中のものです。2014/12/19(金) 11:37:36.22ID:k0lr7eQa
>>266
ファイル名の管理に困っているならアセットをかえばいけると思いますよ
0270名前は開発中のものです。2014/12/19(金) 11:38:12.22ID:iunceamf
タップが押した瞬間じゃなくて、押して離した瞬間の検知になってるとか?
0271名前は開発中のものです。2014/12/19(金) 11:40:56.44ID:VoVCCM7h
>>266
日本語名FBXファイルなんてわざわざ用意する必要あるのかな?
MMDモデルファイルをFBXに変換してそれをゲーム画面上で選択して踊らせたいとか?

どういう作りにしているのか知らないけど、
・英語名FBXファイルを指定のフォルダに入れるようにする
・英語名と日本語名を対応付けるハッシュを設定ファイルとして別途用意する(FBXファイルを追加するたびに更新)
・ゲーム起動時にハッシュを読み込んで表示名に日本語を使う
くらいじゃないかなぁ

>>265にもあるようにUnityは日本語の扱いに弱いからWinアプリみたいな柔軟な対応は無理かもね
0272名前は開発中のものです。2014/12/19(金) 12:32:35.00ID:D5yP9UIE
>>266
ナルホド。Unityっていうかインポータ内部の処理の問題だと思うので
直接的な解決はUnityに言って直してもらうしかないよね。
局所的な話だしリクエスト出せばさらっと直ってきそうな気もする。

3D系のものやってる身的にはファイル名を日本語でつけるとか
色々殺されるだろ的なものは感じるがそういう現場じゃしょうがないよな。

>>271の言うようにハッシュ使うか内部で表示する時にエンコード変換するとかか。
エンコードの変換は上手くいくかどうかはわからんけど。
0273名前は開発中のものです。2014/12/19(金) 15:51:56.00ID:Xkc2mkTT
uGuiのCanvasScalerをScale With Screen Sizeに設定した状態で
ゲームオブジェクトのスケールを自動で1にした状態でInstantiateする方法わかりませんか?

具体的にはRefernce Resolutionで設定した値より低い解像度でゲームを走らせて、
Spriteコンポーネントが含まれるプレハブをInstantiateしてCanvasの子にすると、
解像度が低い分、プレハブのスケール値(1スケール)より大きくなってしまうようで、
スクリプトでInstantiate後に毎回new Vector3でスケールを1に代入しています。

Instantiateしたら自動で実行解像度にスケールしてくれる方法わかりませんか。
長くてすいません。
0274名前は開発中のものです。2014/12/19(金) 16:03:16.32ID:D5yP9UIE
Instanciateにスケール指定オーバーロードがあればそこでScalerの値を突っ込めばいいんだろうが
そんなオーバーロードはない。したがって自動でやる方法はない
0275名前は開発中のものです。2014/12/19(金) 16:22:07.10ID:4sS81DrV
>>273
アセットをかえばできると思いますよ
0276名前は開発中のものです。2014/12/19(金) 16:26:16.14ID:ShNYGd3F
Instatiateとscaleをセットにしただけのメソッドを作ってしまえばいいのでは
0277名前は開発中のものです。2014/12/19(金) 17:26:40.83ID:0T3Xotav
uGUIをマルチプラットフォームに向けて画面サイズを小さくしたら、レイアウトを、崩さないでボタン、テキストをそのまま小さくしたいのですが、uGUIの機能で実現可能でしょうか…
Anchorがうまく使いこなせません。
0278名前は開発中のものです。2014/12/19(金) 17:47:32.04ID:LwfaEmD9
モチベーションを維持できるアセットを教えて下さい
0279名前は開発中のものです。2014/12/19(金) 18:14:24.68ID:jrh8ntQK
>>277
AnchorプリセットでAltキー押してストレッチに設定すれば画面サイズに合わせて伸縮します
可能な限り目一杯広がるのでLeft・Right・Top・Bottomのパディング値も設定しましょう
0280名前は開発中のものです。2014/12/19(金) 18:15:54.42ID:4sS81DrV
>>278
モチベーションを上げるアセットをかいましょう。アセットストアで検索しましょう
0281名前は開発中のものです。2014/12/19(金) 21:04:48.81ID:0T3Xotav
>>279
できました!
ありがとうございます!
0282名前は開発中のものです。2014/12/19(金) 22:40:51.21ID:Xkc2mkTT
>>276
なんていうか、プレハブのオリジナルスケール値がInstantiateした直後にUnity側で変更されてて
さらにそれを元のスケール値に戻すためにvector3で代入するっていうのが気持ち悪いんですよね

パフォーマンス的にもどうなのか疑問なんですが、uGuiはこういうもんなんですかねぇ
解像度自体がデフォルトと違うから適時処理を変えろって話なのかもしれませんが...
0283名前は開発中のものです。2014/12/20(土) 01:25:32.38ID:aF5E4qAv
今ドミノを作っていて、100ピースある時に100個コピーして並べるのは面倒なので
例えば10個並んだセットみたいなものを作りたいんですが、そのようなことは可能でしょうか?
(もちろん、セットの中のそれぞれのピースは独立に動く必要があります)
ドミノ自体はBlenderからblend形式でインポートし、それをプレハブ化しています。
0284名前は開発中のものです。2014/12/20(土) 01:44:52.53ID:Sy0R1Oq2
>>283
できますよ。アセットをかえばできます
0285名前は開発中のものです。2014/12/20(土) 02:33:32.25ID:AVTFwoO/
>>283
空のゲームオブジェクトを用意してドミノ10個を子にして並べる
空だったゲームオブジェクトをプレハブにする
0286名前は開発中のものです。2014/12/20(土) 02:35:42.16ID:rxL7hiQ4
10個並んだ物を子オブジェクトにしてプレファブにするだけ
0287名前は開発中のものです。2014/12/20(土) 03:13:40.43ID:aF5E4qAv
>>285-286
初歩的な質問ですみませんでした
ありがとうございます、希望通りの動きでした!
0288名前は開発中のものです。2014/12/20(土) 12:21:17.94ID:Ci4Z484k
質問。敵キャラがフィールド上を巡回するようにランダムな円運動をさせてるんだけど、
フィールド上のオブジェクト(岩とかブロック)にぶつかったときに、オブジェクトに入り込んでしまうのって、どうやって回避するんだろう。
もちろん敵キャラにもコライダーはつけてあって、自キャラとぶつかってもお互いにめりこんだりはしない…。

自キャラはぶつかって、めり込めないオブジェクトなのにな〜。
マテリアルとかコライダーの設定じゃなく、コーディングで回避するしかないのかな?
0289名前は開発中のものです。2014/12/20(土) 12:39:16.90ID:kZxIjMWb
>>288
どう動かしてるのかも判らんのにどう回避させればいいのかなんてわからんよw
確かなことはめり込まないように円運動させることは可能で、
めり込ませるような設定をしたりプログラムを書いたりしているからめり込んでるということだけだ。
0290名前は開発中のものです。2014/12/20(土) 13:11:55.22ID:NFV4q4IN
とりあえずランダムな円運動のコード晒せよ
0291名前は開発中のものです。2014/12/20(土) 13:36:08.96ID:HUpuvngH
VScommunity+UnityVSシステムでVSからUnityのオートコンプリートって使えないんですか?
「Onm」でOnMouseEnterがリスト表示されるヤツです
ctrl+shift+Mで標準メソッドについてはリストアップされるみたいですが、そうじゃなく
3文字くらい打ったらオートコンプリートされる機能を使いたいです
0292名前は開発中のものです。2014/12/20(土) 15:59:40.53ID:mclPNWYf
UGUIのInputTextのTextの初期値って保存できないんですか?

値セットしても、ゲームデバッグ実行するとTextが初期化されて
しかも終了するとそのまま空の状態になっちゃうんですが
0293名前は開発中のものです。2014/12/20(土) 17:00:08.05ID:5LO2/S0S
>>271,272
とりあえず、現状はマルチバイト文字が鬼門という感じですね。
提案してもらったハッシュ化など、現状とは別の方針で解決策を模索してみます。
有難うございました。
0294名前は開発中のものです。2014/12/20(土) 18:55:01.95ID:jIrKIQSi
>>291
使ってないからわからないけど、VSならCtrl+Spaceで自動補完じゃない?
0295名前は開発中のものです。2014/12/20(土) 19:28:53.26ID:7Ku4O3/+
>>288
レイヤーごとの当たり判定設定する項目いじったか?
それで敵とオブジェクトの判定オフにしてないとそういう挙動は起こらないはず
0296名前は開発中のものです。2014/12/20(土) 19:46:34.62ID:jIrKIQSi
>>288
Forceじゃなくて座標で直接移動させてるんじゃない?
0297名前は開発中のものです。2014/12/20(土) 20:46:09.94ID:HUpuvngH
>>294
それで自動補完出るんですが、unityのメソッドが出ないんです
とりあえずctrl+shift+Qで出してます
0298名前は開発中のものです。2014/12/21(日) 00:00:57.62ID:Sy0R1Oq2
>>297
アセットをかえば出るかもしれませんよ
0299名前は開発中のものです。2014/12/21(日) 01:40:33.67ID:2lKsPRz0
if (Input.GetKey("a")) {
//弾丸を発射
}
というスクリプトを持ったPrefab_Gunがあったとすると、
Prefab_GunのインスタンスAとインスタンスBは、
どちらもaを押したときに弾丸を発射することになりますが、

これを

if(何らかの変数){
//弾丸を発射
}
という風にして、
aを押したらインスタンスAからだけ弾丸が発射されて
bを押したらインスタンスBからだけ弾丸が発射される、
という処理にすることは可能なのでしょうか?
0300名前は開発中のものです。2014/12/21(日) 02:01:46.84ID:y2pE5h8q
>>299
可能ですよ。スクリプトに頼らずともアセットをかえば簡単に可能です
0301名前は開発中のものです。2014/12/21(日) 02:25:52.58ID:RpoaLujD
>>267
俺もリズムゲーム作ってんだけど、同じだわ。
これAndroid(iPhoneも?)の遅延じゃないか?
似たようなゲームとか打楽器系アプリのレビュー見てみると遅れて音が鳴る件でマイナス評価多いし。
叩いた音が鳴る仕組みとタップは相性悪そう。
0302名前は開発中のものです。2014/12/21(日) 02:43:04.22ID:Wv777wiS
OnMouseDown を使ってボタンを作っていますが、
ボタンが反応したりしなかったりします。

コンティニューボタンのように、
ゲーム内の特定条件で生成され、
押されると自分自身を消す動作です。

BoxCollider2D で判定を取っており、
BoxCollider2D の size は指定していません。

3回ぐらいは反応しますが、
何度も試していると、
生成されたあとにタップに反応しなくなります。

OnMouseDown の先頭にコメントを入れてみたのですが、
反応しなくなったときは、
OnMouseDown 自体に入ってきていません。
BoxCollider2D の size はそれらしい値が入っています。

OnMouseDown の検知が不安定になる事ってあるのでしょうか?
0303名前は開発中のものです。2014/12/21(日) 02:56:04.24ID:y2pE5h8q
>>302
タップの反応などは、アセットをかえば簡単に対処できると思いますよ
0304名前は開発中のものです。2014/12/21(日) 03:21:22.31ID:LX9lIJlh
>>302
OnMouseDownイベントが発生しない

スクリプトでメッシュを作成したオブジェクトのOnMouseDownイベントが発生しなかった。
オブジェクトにMeshColliderコンポーネントを追加することでイベントが発生するようになった。

ttp://narudesign.com/devlog/unity-careless-mistake/
0305名前は開発中のものです。2014/12/21(日) 04:45:29.08ID:honHqmh4
以前ドローコールの件で質問した>>252です
あの後色々試した結果、使用しているモデルが悪いという事が判明しました
キューブだとバッチングされるがスフィアだとバッチングされないという事が数件ネットの記事であったので
試しに自作のモデルをキューブに置き換えたところ見事にバッチングされました

自作のモデルは頂点数は多く見積もっても30以下でスケールは全て1
shadeで作成し、shade loaderでunityに持ってきてます
テクスチャは未使用

解決する方法はあるでしょうか?
0306名前は開発中のものです。2014/12/21(日) 06:50:50.73ID:RpoaLujD
Androidの発音遅延について調べてみたけど、AndroidでDTMアプリがリリースされない理由に行き着いたわ。
自分もそういう理由で普段使いにiPhoneを選んだのを思い出した。

結果はAndroidの発音遅延仕方なし。

最近はAudioManagerAPI 利用、SoundPoolの利用で少しは解消されてるみたいだけど、すげーめんどいな。
0307名前は開発中のものです。2014/12/21(日) 07:16:12.74ID:m4OzzVKx
Androidの遅延は本当に難題だった・・・
というか、解決出来なかった
0308名前は開発中のものです。2014/12/21(日) 07:22:45.65ID:7rkINnOJ
>>299
それアルゴリズムの話であってUnityの話ではないよなぁw
例えばだが

//略
static int thisNo= 0;
string inputKey;

void Awake(){
inputKey=(thiNo%10).ToString();
thisNo++;
}

void Update(){
if(Input.GetKey(inputKey){
//発射
}
}

とかやってやればキーの0から1までに発射ボタンを
割り当てていくことは出来る、ような気がする。
機体が11個以上になったら重複していく。
英字でやりたいなら
Awakeのところを
inputKey=((char)((thisNo%26)+97)).ToString();
とかやってやればできる、のではないか、多分、恐らく。
まぁabcedの順のボタンとか使い勝手的にどうかとは思うがw

テストとか一切してない。すまんw
0309名前は開発中のものです。2014/12/21(日) 07:48:49.09ID:7rkINnOJ
>>305
そのデータの「悪さ」がなんなのかよくわからないのであれだが
頂点数30くらいなら試しにBlenderで似たようなデータ作って
試してみれば。
球だとばっちんぐされないって話はバッチングには頂点数の限界があって
それは現状900くらいだ、という話ではないかと思うのでこの話が
そうなのかは正直わからない。
ただモデルの頂点数は作り方によってUnity内での数え方は異なる。
それはUVが切れていたりとかの事情で変わってくるので
インポートしたオブジェクトの子になっている(であろう)メッシュオブジェクトを
選択してインスペクターに表示されるVerts、Trisを見た方がいい。
Shade固有の問題だったりするとと正直判らん。
0310名前は開発中のものです。2014/12/21(日) 10:03:45.99ID:y2pE5h8q
>>305
解決法はあります アセットをかえば解決すると思います
0311名前は開発中のものです。2014/12/21(日) 13:09:07.35ID:ScNX9ylT
>>297
OnMouseOverとかの一連のメソッドはMonoBehaviourから継承してるわけじゃないから普通は補完効かないと思う
あるとしたらUnityVS側の設定なんじゃないだろうか
見当違いだったらごめん
0312名前は開発中のものです。2014/12/21(日) 13:22:08.09ID:sYzeLG8I
スクリプトを考える時間も作る時間も勉強する時間も無駄ですよね
アセットをかえば一瞬で解決しますよ
0313名前は開発中のものです。2014/12/21(日) 13:26:26.26ID:Wv777wiS
>>304
そのページは見てますが、
一度も発生しないのではなく、
最初の数回は反応します。
だから逆にわからなくて。

z 軸を -0.1 したら反応精度が上がったけど、
この対処でいいのかどうか。
0314名前は開発中のものです。2014/12/21(日) 14:56:01.19ID:3tAYP1Ss
シェーダの勉強してるんですが
ttp://docs-jp.unity3d.com/Documentation/Components/SL-VertexFragmentShaderExamples.html
ここのページのBehind Barという縞模様になるシェーダをコピペするとエラー吐いてオブジェクトがピンクになってしまいます。

エラーコードは
Shader error in 'Custom/WindowCoordinates/Bars': 'vert': function return value missing semantics at line 15
と出るのですがそれっぽいところをいじっても直らないので困っています。
どなたか詳しい方おりましたら教えていただけるとありがたいのですが...
0315名前は開発中のものです。2014/12/21(日) 15:01:17.01ID:sYzeLG8I
>>314
シェーダは難しいですね。しかし、アセットをかえば勉強なしで簡単にシェーダを利用できますよ
0316名前は開発中のものです。2014/12/21(日) 15:09:50.07ID:Ng1eWUpo
>>314
エラーメッセージの通りstruct vertOutの定義部にセマンティクスを指定しましょう

float4 scrPos;

↑の行を↓と書き換えてください

float4 scrPos : TEXCOORD;
0317名前は開発中のものです。2014/12/21(日) 15:22:44.17ID:3tAYP1Ss
>>316
できました!ありがとうございます!
scrPosはPOSITIONだと思ってました。(これだとSV_POSITIONとだぶってエラーになるんですが)
テクスチャ使ってないと思っていたのでTEXCOORDは全然でてきませんでしたね。
0318名前は開発中のものです。2014/12/21(日) 17:03:16.76ID:b6ei4u4A
aaaという親の中にあるbbbというタグのついたオブジェクトの座標を取得するにはどうすればいいですか?
あと2階層の子のオブジェクトを取得するのはわかるのですが、
たとえば6階層あったとき一番上の親と一番下の子のオブジェクトの名前のみを記述して取得するには
どうすればいいですか?
0319名前は開発中のものです。2014/12/21(日) 17:05:44.21ID:3tAYP1Ss
たびたび失礼します。>>314です。
先ほどのコードなのですが...

vert内の o.scrPos = ComputeScreenPos(o.pos); の役割ってなんなんでしょう?
引数で渡した座標位置をウィンドウの座標位置に変換してくれるという記述を見つけたのですが、いまいちどういうことかわかりません。
試しにこの一行を削ってみるとオブジェクトは縞々ではなくなりました。画面位置によるグラデーションは不完全ですが機能していました。

それから float2 wcoord = (i.scrPos.xy/i.scrPos.w); についてです。
wcoordが0.0〜1.0の小数2つということはわかるのですが、w値で割るという操作が何を示しているのか理解できません。
0320名前は開発中のものです。2014/12/21(日) 17:13:18.73ID:honHqmh4
>>309
現在のshade loader経由(以下A)はverts319,tris332
vertsが頂点、trisが面でいいのでしょうか?
感覚は全然アテになりませんね…

試しにAをobj(余計な情報が入らなそうだから)でblenderに放り込んでFBXでエクスポート(以下B)
これをunityに放り込むとスケールが超小さくなりましたがverts168,tris332に!

Bをshadeで開くとスケールは正常だったので試しにFBXでunityに(以下C)
CとBのvertsとtrisは一緒ですがCのスケールは正常でバッチングもできました

Bをloaderに経由させてもCと同じ結果になりました
理由はイマイチ分かりませんが望む結果になって良かったです
0321名前は開発中のものです。2014/12/21(日) 17:48:32.83ID:504KASFm
>>319
スクリプトは難しいですね。無理せずアセットを使いましょう
無理は体に毒ですし、時間の無駄ですよ
0322名前は開発中のものです。2014/12/21(日) 18:39:45.26ID:Ng1eWUpo
>>319
ComputeScreenPos関数は"UnityCG.cginc"というファイルで実装されています
http://unity3d.com/unity/download/archive
でbuiltin shaderをダウンロードして探してみましょう

はっきりいいって、関数の中身見ても何がなにやらわかんないと思います。(俺もわかんねっす)
要はスクリーン座標を計算してくれる関数だと理解しとけば問題ないです
0323名前は開発中のものです。2014/12/21(日) 18:41:26.23ID:zYHSNMou
インクリメントした値を参照して、特定の値に達したら0か1を返す方法はどうすればよいでしょうか?
残念ながらお金が無いのでアセットは買いません。
0324名前は開発中のものです。2014/12/21(日) 18:51:45.92ID:h+MgiEm7
if(参照値 > 閾値) return 0か1
else return 1か0
0325名前は開発中のものです。2014/12/21(日) 19:12:00.33ID:7rkINnOJ
Unityの話じゃねぇしそんな文書けなかったら何も書けなくね?w
0326名前は開発中のものです。2014/12/21(日) 19:28:38.55ID:zYHSNMou
質問の仕方がちょっと違ってましたけど解決しちゃいました
すんません
0327名前は開発中のものです。2014/12/21(日) 20:06:01.06ID:PuGxLnvy
えらくマヌケなやっちゃな
ドンマイ
0328名前は開発中のものです。2014/12/21(日) 22:03:16.62ID:zYHSNMou
すいませんもう一度質問させてください。今度はUnityに関係あると思います。
SpriteRendererで色を変化させてる時に、白ではなく黒で塗られている部分を変化させたいのですが
これは自前でシェーダー書かないと再現できないでしょうか?
0329名前は開発中のものです。2014/12/21(日) 22:08:19.95ID:504KASFm
>>328
自前でシェーダを書く必要ないです。アセットをかえば簡単にできると思いますよ
0330名前は開発中のものです。2014/12/21(日) 22:39:50.36ID:gHWoZrVa
0に何をかけても0という事
0331名前は開発中のものです。2014/12/21(日) 22:43:44.94ID:zYHSNMou
>>330
あーなるほど
colorを変更する前に色を反転するって仕組みがあれば出来るっぽいですけど
プリセットに色反転するシェーダーなんてありましたっけ...
0332名前は開発中のものです。2014/12/21(日) 23:05:45.74ID:3tAYP1Ss
>>322
ありがとうございます。見てみます。
0333名前は開発中のものです。2014/12/21(日) 23:27:13.13ID:7rkINnOJ
>>331
反転すると全部色変わっちゃうがそれでいいのか?
まぁどうであれ自分でシェーダ書くのがラクで早そうだが
0334名前は開発中のものです。2014/12/22(月) 00:00:40.27ID:vLjoTVUl
すみません、質問です。
マウスでクリックしたらクリックした場所に物体が来るようなスクリプトを組みました。
ですがうまく動いてくれません。
作成したスクリプトは下記です。

if(Input.GetAxis("Fire1")){
var Mo:Vector3=Input.mousePosition;
var aa:Vector3=Camera.main.ScreenToWorldPoint(Mo);
aa.z=transform.position.z;
transform.position=aa;
}

かなり試行錯誤していたのですがどうもMo.zの値が0の状態でScreenToWorldPointにかけるとおかしな挙動になってしまうようです。
そこで下記のようにMo.zに先に値を与えてからScreenToWorldPointをするときちんと動いてくれました。

if(Input.GetAxis("Fire1")){
var Mo:Vector3=Input.mousePosition;
var t:Vector3=Camera.main.WorldToScreenPoint(transform.position);
Mo.z=t.z;
var aa:Vector3=Camera.main.ScreenToWorldPoint(Mo);
transform.position=aa;
}

すみませんが、Mo.zが0のときにScreenToWorldPointをするとおかしな挙動になってしまうのはなぜなのか教えていただけませんでしょうか。
よろしくお願いします
0335名前は開発中のものです。2014/12/22(月) 01:26:37.97ID:jImNMacs
>>334
スクリプトは難しいですね。無理せずにアセットをかって対処しましょう
簡単にできますよ
0336名前は開発中のものです。2014/12/22(月) 07:23:11.99ID:6wTlTTx9
>>334
どうおかしくなっているのか、がわからんので明確なことは言えないが
ScreenToWorldPointはスクリーン上のXYポイントを
ワールド上でカメラからみた、カメラの方向に向かった距離(深度)に変換する。
ttp://docs.unity3d.com/ScriptReference/Camera.ScreenToWorldPoint.html
"The z position is in world units from the camera."

Unityのシーンビューでカメラをつかむとパースペクティブになっていれば
四角錐のオブジェクトが示されるがこれがカメラが写す範囲だということはわかるだろう。
ScreenToWorldPointはカメラから見た点がこの四角錐の中のどこにあるのかを割り出すものだ。

そしてカメラからの距離が0、ということはこの四角錐の中での位置は
その頂点、カメラの位置、以外の場所ではあり得ない。
従って何をしても返ってくる位置はカメラ位置になる。

おかしい、というのがそういうことならそういうこと。
ただこれには例外があってそれはカメラがOrthographicになってる場合で
この場合には意図した位置がかえってくる、はず。
0337名前は開発中のものです。2014/12/22(月) 15:18:06.93ID:RByeuiOD
>>335
実際、ビジュアルスクリプティングアセット”{b} Behaviour Machine”ならノンコーティングでできるサンプルがありますよ
アセットおじさん大敗北
0338名前は開発中のものです。2014/12/22(月) 16:03:43.78ID:AclzpAQ7
>>334
奇遇だな。
俺も、同じ処理で躓いてた。
ここは、ワールド座標に変換する前に、スクリーン座標の時点で、z座標を、設定してしまうとうまく行くよ。
何もしないままだと、カメラから距離0の地点が指定されてしまう。
■ このスレッドは過去ログ倉庫に格納されています