【3Dゲームエンジン】Unity質問スレッド32
■ このスレッドは過去ログ倉庫に格納されています
フリー版で開発したゲームは個人・法人を問わず追加のロイヤリティーなしで販売できます。
プラットフォームサポートはiPhone/iPod Touch/iPad、Mac、PC、Web、Wii、Xbox360、Android、PlayStation 3、PlayStation 4、PS Vita他
次スレは>>950以降にできるだけ早く(できれば回答者が回答した後にでも余裕を持って)建てて下さい。
■Unity 2ch Wiki(まとめ、過去ログ、リンク集)
http://www24.atwiki.jp/unity2ch/
●リンク
・Unity(日本公式サイト)
http://unity3d.com/jp
・マニュアル
http://docs.unity3d.com/ja/current/Manual/index.html
・チュートリアル
http://unity3d.com/jp/learn/tutorials
・スクリプトリファレンス
http://docs.unity3d.com/ja/current/ScriptReference/index.html
・FAQ
http://unity3d.com/jp/unity/faq
・MSDN
http://msdn.microsoft.com/ja-jp/ms348103←スクリプトのエラー番号をこれで検索すると原因が日本語で出てきます。
前スレ
【3Dゲームエンジン】Unity質問スレッド31
https://mevius.5ch.net/test/read.cgi/gamedev/1504366121/ Unitychanのモデルを触ったことがないかつ、顔マスクのことを知らないんだけど、
>>449
メッシュの各頂点にUV座標というもの持ってて、それを読み込んでテクスチャ(マテリアルの中の)のどの部分を表示させるか決定しています。
UnitychanのメッシュのUV座標はUnitychanのテクスチャに合わせてUV座標が割り当ててあるのだから、ほかのメッシュにしたときにおかしくなるのは当然のことです。
>>450
線や面を追加したときに、UVの設定もしました? 3DCGの基礎の基礎というか仕組みを司会してない奴に何話しても無駄だぞ 基地外とバカチョンが戯れるスレだから普通の人は関わらないように >>454
アセットを買えば日本語も上手くなれると思います はい、クソ野郎の皆さんこんばんは
第6回目の講義は変数の集合体である「配列」についての勉強となります。
下のようなプログラムがあったとします。
---例---
string mes0 = "よう。ここは武器屋だ";
string mes1 = "用件はなんだ";
Debug.Log( mes0 );
--------
これは「よう。ここは武器屋だ」と表示されます。
"Debug.Log( mes1 );"にすると「用件はなんだ」と表示されます。
配列を使用すると下のようになります
---例---
string[] mes = new string[2]{ "よう。ここは武器屋だ", "用件はなんだ"};
Debug.Log( mes[0] );
--------
最初のプログラムと書き方は変わりましたが結果は同じで「よう。ここは武器屋だ」と表示されます。
配列は複数個必要になりそうな変数を1つにまとめて扱いやすくする物です。
「mes0、mes1、mes2、mes3・・・・mes104」のように
変数を1個ずつ宣言していくのは無駄です
配列を上手に活用することでプログラムをスッキリと見やすくまとめる事ができます。 先程は下のように配列を作りました
---例---
string[] mes = new string[2]{ "よう。ここは武器屋だ", "用件はなんだ"};
--------
配列を2つしか作成していないので"mes[2]"という存在しない物を使おうとするとエラーになります。
"mes[0]"の"0"部分を「配列の添え字」と呼びます。
添え字は1からではなく0からスタートするのでご注意を。
例えば配列が3個ある時は1〜3ではなく0〜2です。
配列の作り方(宣言)と値の入れ方(初期化)は色々方法があります。
それらについて説明します。
---例1---
string[] mes = new string[]{ "よう。ここは武器屋だ", "用件はなんだ"};
--------
このように配列を何個作るか省略もできます。
この場合勝手に2つ作られこちらの方が便利です。
---例2---
string[] mes = new string[2]; //この時点では2個の"mes"が作られているだけで中身はなし。
mes[0] = "よう。ここは武器屋だ"; //作ったmes配列に値を入れている(初期化)
mes[1] = "用件はなんだ";
--------
これは配列の宣言と作成、初期化を別々に分けた例です
---例3---
string[] mes; //宣言の時に配列は作らず…
mes = new string[2]; //ここで配列の実態を作成
mes[0] = "よう。ここは武器屋だ"; //作ったmes配列に値を入れている(初期化)
mes[1] = "用件はなんだ";
-------- >>450
UVの設定は難しいですね。
解説サイトを読みながらその通りにしたのですが、途中で頭が飛びました・・・w 続きです
---例4---
string[] mes;
mes = new string[]{ "よう。ここは武器屋だ", "用件はなんだ"};
--------
---例3---
string[] mes = { "よう。ここは武器屋だ", "用件はなんだ"};
--------
これが一番簡単な宣言と初期化の仕方ですが宣言と同時の時にしか使用できないという条件付きです。
どういう事かと言うと例4のように
---ダメな例---
string[] mes;
mes = { "よう。ここは武器屋だ", "用件はなんだ"};
--------
こういった使い方ができません。
このように宣言と初期化の方法は色々ありますが
自分にあった方法を使うとよいでしょう。
基本的には例2と例3をよく使うことになるかと思います。
次の例は配列が何個宣言されているのか知る方法です。
---例---
string[] mes = { "A", "B", "C", "D" }
Debug.Log("何個ある?=" + mes.Length);
--------
配列を4つ作成しているので「何個ある?=4」と表示されます。この「Length」は後々出てくる「ループ制御(for)」でよく使用しますので覚えておいて損はないでしょう。 作成した配列は
プログラム終了時、又は、システムが不要と判断した時に勝手に削除(解放)してくれるので
基本的に作りっぱなしで大丈夫です。
律儀に手動で削除や解放をする必要はありません。
ですが手動で削除したい場面に出くわす時もあり
その場合は下のように"null"を入れると削除できます。
--例--
string[] mes = {"A","B","C","D"};
Debug.Log( mes.Length ); // 「4」と表示される
mes = null; // 配列を解放
Debug.Log( mes.Length ); // 配列は解放され存在していないのでここでエラーになる
------
今回は以上だクソども ミスを発見だクソども
>>461の
---例3---
string[] mes = { "よう。ここは武器屋だ", "用件はなんだ"};
--------
は「例3」ではなく「例5」だ。
よってその下の説明は
(×間違い×)
「基本的には例2と例3をよく使うことになるかと思います。」
(〇正しい〇)
「基本的には例2と例5をよく使うことになるかと思います。」
となる。
悪かったなこのやろう。 >>461
>>462
>>463
狂った人が出てきましたねw
ただ当方も初心者なので言うのは何ですが、初心者の頃って、
string[] mes = { "きんたま", "おまんこ"};
とかついやりがちですよね? assetstoreでFREEでダウンロードしてもいい
データを許諾を得ないで商用転用しても大丈夫なんでしょうか?
作ったゲームが万が一大ヒットしてしまった場合
権利関係でもめたくないので
そこらへんの事情を知りたいんですが・・・アメリカって訴訟大国だし
一応Unity関連本によるとAssetStoreのデータでゲーム作って
売ってもおkみたいな解説を見たのですが Unityの3D gameobject、プリミティブが少なすぎて困ってたけど、
他の3Dソフトで作ったオブジェクトをFBXで保存すれば、
AssetsフォルダにD&Dするだけで、2DのSpriteみたいに、
ガンガン取り込んで使えることをいまさら知った・・・
・・・けっこう便利だ >>469
おいキムチ
てめえは何回同じ質問すれば気が済むんだよ
自分でそのアセットの使用条件ライセンスを読めと何度言われてきている?
いい加減にしろよてめえ!! すみません、多分すごいしょうもないことやってるんだとは思うのですが
いつの間にかプロジェクトからヒエラルキーやシーンにドラッグドロップできなくなってしまいました
逆の、プロジェクトに落としてprefab化もできません
何か原因のお心当たりありますか? Pcごと再起動して同じことを試す
新規プロジェクトで同じことを試す
Unity再インストールして試す
検討つかないけど自分ならこの順番でチェックしてみるかな どなたかアセットの宴3を使っている人はいませんか?
インポートした場合、トップメニューにToolsのメニューが表示されるはずなんですがありません。
初めてアセットを買ったので基本的な使い方がわかっていないのかもしれませんが、、、。 >>475
開発者、結構レスポンスくれる人だから聞いてみたら
時村良平 @rodostw >>472
おい、>>469の質問は当方ではありませんぞ!!
>>468の書き込みが当方のものだぞ。
おい、間違えないように頼むぞ!!! >>475
その人のwebサイトを見てみました。
Unitychanを使っていますね。それよりちょっとダサめのキャラは自作キャラですか?
で「宴3」ですが、読んでも結局、何のソフトなのかわかりませんでしたw
こんなわけのわからないものを買うなんて、あなたも相当変な趣味の人ですね 当方もいま自作キャラを開発中です。
名前はヨナchanです。
まだベースがunitychanから出ていなくて、開発途上なんですけど・・・
ベースをどんどんつくりかえてていって、完全にオリジナルのところまで持っていけばゴールです。
https://youtu.be/LRQDRvAIL9o >>474
ありがとうございます、PC再起動で直りました
Unity自体は再起動したり新規プロジェクトで試したりしたのですが改善せず困ってました
まずはPC再起動大事ですね 宴って日本発assetで一番売上あるんじゃね?
他に有名所あるかも知れんけど
こんだけunity触っててaseetの内容すらわからないってやばくない? ノベルゲームつくーるみたいなもんだよ
レベルの低い開発者を相手に商売するのが一番儲かる
数が多いから >>480
確かにこの絵は一般ウケする絵ではないようだ。
だが眉を太くしてキツネ目にしないと、どうしてもキムヨナに似ないのだよ。
かといってキムヨナ以外のキャラつくっても、自分的にまったく意味ないし・・・
何かいい解決策はありますか? キムチはライセンス違反と法律違反をしたいようだな
自分で読めと言ってるのを無視し続けるそうなる
馬鹿じゃねーのコイツ >>486
おい、間違いじゃないのか?
>>469の質問は当方ではなく、
>>468の書き込みが当方のものだ。
改変して配布するとダメなことは わかっているよ。
配布するときにはにはunitychanから離れるから大丈夫だよw 違約金ビジネスでガッポリ荒稼ぎ
何で読まないんだろねw 初心者ですが、UNITYで面白いゲームは制作できますか?
すでにあるゲームでUNITY製の名作って有りますか? >>489
unityは道具なだけたから、あなた次第。 >>489
有名なやつなら白猫、ナンバリング忘れたけどドラクエ、ポケgoあたり
面白いゲーム作りたいなら>>490を100回読めよ >>489
面白さってものは人それぞれだけど、10万ダウンロードくらいを目指すなら個人でも案外簡単に作れるよ。 はいどうも。講師です。
今回はプログラミングの話しではなく
番外編としてゲーム作り理論について少し語ってみたいと思います。
まず初心者の間でよく出る質問が
「面白いゲームの作り方」と
「簡単に作れるゲームはなに?」で
この2つを合体させて「面白くて簡単に作れるゲームはなに?」ですが
この2つは水と油の関係みたいなものです。
基本は反比例関係にあり両立しないと思った方がいいでしょう。
"簡単に作れる"ということは、言ってしまえば誰もが作れるものであり
誰もが作れるのならば、そのゲームは世の中にありふれているわけです。
ありふれているということは誰もが一度は触った事がある可能性が高く
結果、もう飽きられている物が大半と言えます。
具体的には
テトリスやぷよぷよなどの落ちゲーパズル
スコアを競い合うだけのシューティングゲーム
オセロのようなボードゲーム
などがパッと思い浮かびます。
一度は無料ゲームで遊んだことありませんか?
余談ですがゲーム関係の専門学校は卒後するために
自作ゲームの作品を提出する課題を出すところが多いのですが
ノベルゲーム(テキストアドベンチャー)やオセロなどのボードゲームは禁止にしている場合が多いです。
理由はゲームプログラムの勉強にならないほど簡単な為です。
なのでこの2つのジャンルを自力ではなくアセットを使って行うと
あまり自分の為にならないのでゲームプログラミングの勉強をしたい人にはオススメしません。 次に「面白いゲーム」についてですが、
あなたが今まで「これ面白いぞ!」と思ったゲームをいくつか思い出してみましょう。
そしてそれの何処が面白く感じたのか、時間をかけてじっくり分析してみてください。
すると今まで漠然と、なんとなく面白いと感じていた物には理由や仕組みがあることに気付けるはずです。
格闘ゲームが好きな人もいれば音ゲーが好きな人もいる点からも分かる通り
「面白い」という感覚は人によって違います。
陥りがちなのが
「自分が面白いと思っているため絶対に他の人にもうけるに違いない」と独りよがりに妄信してしまうことです。
この点には注意が必要です。
これを回避するには
自分は面白いとは思ってないのに世間で人気のある売れてる作品を
冷静に分析してみると勉強になるかと思います。
「自分は面白いとは思わないが皆はこういうのが好きなのか」
という事を理解できるため、これはマーケティング(市場調査)の勉強にも繋がります。 そして人気のあるゲームは周期的なブームがあることも覚えておくといいかもしれません。
過去に
縦型弾幕シューティングブーム
格闘ゲームブーム
RPGブーム
シミュレーションRPGブーム
音ゲーブーム
レースゲームブーム
パーティーゲームブーム
無双系ゲームブーム
クラフト系ゲームブーム
脱出系ゲームブーム
FPSゲーブーム
オープンワールド系ブーム
などがあり、ゲームプレイヤーならば記憶に刺さる部分があると思います。
現在は
オープンワールド&オンライン&多人数&対人対戦&FPS&ソーシャル&カード
といったキーワードの入っているゲームの売り上げが好調です
ただしこのブームも全盛期は去年または1年前までで
今は徐々にブームの火が小さくなっているところです。
今、ブームとまではいきませんが少しずつ盛り上がってきているのが
VRを効率的に活用したゲームです。
ここまで読んでいただいた方には分かる通り
売れるゲームを作る秘訣は
「市場のニーズを読み解く」
「作るにはライバルが作れないようないくつもの技術的困難をクリアする必要があり簡単に作れるものではない」
です。
何かの参考にしてみてください。 そして
「自分が好きなゲームを作る」のと
「売れるゲームを作る」のとでは
やる事が違ってくるということも覚えておくといいかもしれません。 >>499
頭の可笑しいキムチが見えない敵と戦うスレw Unityは売れるゲームは作れても面白いゲームは無理
ガチャゲー周回ゲーの日本モバイル市場に特化した存在 最新のUnity使ってるんですが、画面全体にエフェクト(できればトゥーン調の)を掛けたい場合、シェーダーではなくポストエフェクト?イメージエフェクト?でないと駄目なのでしょうか。
またassetからイメージエフェクトをインポート出来ると合ったのですが、シェーダーしか無くスクリプトが見つかりません…。最新版では無くなったのでしょうか? >>504
画面全体に掛けたい=レンダリングされた平面画像に毎フレーム掛けるしかない=イメージエフェクト
シェーダーで実現したいなら画面に映る物全てにトゥーンシェーダーを適用する >>505
詳しくありがとうございます
トゥーン調のイメージエフェクトは無いのですか? 標準で使える…みたいな記事は見つかるのですが… >>505
シェーダーとイメージエフェクトは違うのですか?
当方にはまったく同じものに思えますが・・・
違いがさっぱり理解できません! >>508
それを理解するには、描画エンジンの簡単な概要ぐらいは知らないとちと理解できないかも。 普通にチュートリアルの初級レベルの話だろうに
基礎も何も習得しないでゲーム作りたいとかいってる馬鹿ばっかり パクリ野郎のキムチなんて相手にするなよ
NGにぶち込め アセットストアから購入した3dモデルをインポートし、
fbxをヒエラルキーに追加しました。
他のオブジェクトから、そのfbxオブジェクトを操作しようとしたところ、
GamaObject.Find は成功している?が、
GetComponentが全て失敗します。(transformも反応なし)
何か考えられる原因はありますでしょうか?
(ちなみに、全然別のfbxを追加したものは、普通に各種操作ができています) >>513
Satomi Character Pack 1.05
です。
Assets->SatomiCharacterPack->Resources->Satomi->ModelsLegacyの中の
f05_blazer_020_h.fbx
を使用しました。
ModelsMecanim下のfbxを使用した場合も同様でした。 >>512
全て失敗ってなに?とりあえずコード晒す方が日本語で説明するより分かりやすいかもね
失敗してるなら、そのGameObjectが指定したコンポーネント持ってないだけだしょ
transform.positionを更新しても反映されないとかだったらAnimatorコンポーネントでもくっついてるんじゃないの? >>514
そもそもトゥーン調のイメージエフェクトあるなんてその記事に書いてなくね?
csファイルが見つからないのはフィルタ掛けてるから表示されてないとかじゃないか?
https://docs.unity3d.com/jp/540/Manual/ProjectView.html
トゥーン調のイメージエフェクトの有無
csファイルが表示されない
2つの問題をごっちゃにして話すのはやめよう >>516
あ、ModelsLegacy下のfbxオブジェはAnimationコンポーネントが、
ModelsMecanim下のfbxオブジェはAnimatorコンポーネントが付いてる。
ので、transformが不正落ちしないけど反応しないのはそれが理由のようです。ありがとうございます。初心に帰ります。
ただ、下記のように、fbxオブジェが明らかに所有するコンポーネントを取得できてなくて、
触ると不正落ち。なのが不明です。(kuriControllerスクリプトは間違いなくfbxオブジェクトにaddComponentで追加されている) //検証用コード
GameObject kuri;
kuri = null;
kuri = GameObject.Find ("f05_blazer_020_h");
if (kuri == null) {
Debug.Log ("error obj");//これは出ない
}
Debug.Log (kuri.name);//正しい名前が出るのでfindはうまくいってる
kuriController kuriCtr;
kuriCtr = null;
kuriCtr = kuri.GetComponent<kuriController> ();//取れてないっぽい
if (kuriCtr == null) {
Debug.Log ("error ctr");//このログが出る
}
kuri.transform.Rotate (50, 50, 50);//落ちないけど反応なし
kuri.transform.Translate (4, 4, 4);//落ちないけど反応なし
Animation anim;
anim = kuri.GetComponent<Animation> ();//取れてないっぽい
//animが取得できていない?ため、anim.CrossFade ("jump_10", 0);を実行すると不正落ち。 jump_10はfbxオブジェに追加定義されている なんつーかバカ初心者だな
ゲームオブジェクトとかインスタンスとかプレハブとかアセットとか全然区別ついてねえだろ >>516 >>520
インスタンス化した状態で実行したら全てうまくいきました。
ありがとうございました。(+勉強しなおします。)
(よくみたら今までfbxオブジェ色付きのままでやってた) オブジェとか変な略し方キムチが良くしてたな
チュートリアルやっても3歩歩くと忘れるキムチレベルの記憶容量なのかね インスタンスについて教えて!概念を理解するのがいまだに難しい。
変数にゲームオブジェクトを代入するとメモリが確保されてそれが実体です。と覚えてるけど合ってる?
プログラマーは当たり前に理解してるから頭がいいね。 実際キムチだしな。
コイツは質問する時だけコテハン外して新規利用者のふりしてやってる姑息な野郎。
だから余計嫌われる。
キムチの質問と言葉遣いは特徴的だからバレてるのに馬鹿な奴だよ。
アセット、ライセンス、有料アセット、モデルインポートの話が続くのは
これ関係はほぼキムチ >>523
教えて!じゃなくて調べろよ
何のためのインターネットだ
2ch見てる時間に調べろ
そうすれば今頃とっくに理解できてるぞお前
馬鹿なのかお前? >>523
インスタンス、実体化、とか、数多の書籍、先輩への応答をしても中々身につかないw
ましてや、ここでは説明しきれんぞ。というか、説明しても一向に理解できないと思う。慣れろw そんな複雑な話じゃなくUnity上ではシーンに配置されたものは全部インスタンス クラスは本来newしてインスタンス化しないと呼び出せない筈。
(生成前に呼ぶと、実体が無いからコンパイラに怒られる)
普通は使う時にインスタンス化してコンストラクタで初期化して実体にする。
不要になったらdeleteで破壊、その時に呼び出されるのがデストラクタ。
newとdeleteがセットで、newしたものは必ずdeleteしないといけない。
C#は初期化しなくても勝手に初期化されるとか、MonoBehaviourが介入してて、
ルールが厳格でないし、あとC#自体が緩い。 >>526
大正解
>>527
手抜き
そして俺も手抜き
>>528
初心者が理解できないマニュアル的回答 >>523
これでわかったな
てめえで調べろ!
沢山調べて自分に分かりやすい場所を見つけろ 明示的にインスタンスの生成と破壊をしないから、分かりにくいっつーだけだが、
多分C#だけとかUnityだけじゃ分からないんでないの? 2017を最初インストールしてその時はちゃんと動作してて、その後Unity5に入れ直して、また5消して2017入れ直して、2017を起動したら
・MSVCP120.dllが見つかりません。再度インストールし直すと解決する可能性があります。
・MSVCR120.dllが見つかりません。再度インストール・・・
と2つエラーが出て起動できなくなって何度アンインストールして入れ直しても同様に起動できないのですがどうすればいいのでしょうか >>531
初心者のインスタンス分からない病はそれ以前の問題
何故インスタンスが必要なのか
インスタンスのメリットとかの概要から説明しないとだめ >>512
>アセットストアから購入した3dモデルをインポートし、 fbxをヒエラルキーに追加しました。
これでインスタンス化=ヒエラルキービューに配置されてる
>>521
>インスタンス化した状態で実行したら全てうまくいきました。
???
512で言った通り、GameObject.Find ("f05_blazer_020_h"); が見つかる時点でインスタンス化されてるんだけど・・・
GameObject.Findってシーン上のオブジェクト探すものだよね
あとf05_blazer_020_hにkuriControllerが付いててGetComponentした場合、失敗するケースなんてないと思うんだけどなあ
ほんとについてるの?って思う
自己解決されてるようだが、謎 >>534
高卒専卒プログラマにはこれが理解できないんだよな
理系大卒を未だに採用しないといけない理由がこれ KuriControllerとkuriController >>523
>変数にゲームオブジェクトを代入するとメモリが確保されてそれが実体です。と覚えてるけど合ってる?
初心者はコード乗っけた方がいいと思う。言葉だとざっくりしすぎ
var go = new GameObject();
⇒これならgoという変数にゲームオブジェクトがインスタンス化=実体化される。
[SerializeObject] GameObject otherGameObject;
var go = otherGameObject;
⇒これは変数に参照を渡しただけでメモリ確保とは言わない。
int n = 10;
配列じゃない数値型を初期化しかときにメモリ確保なんて言わないよね。これと一緒 知り合いのゲーマーがUNITYのゲームはクソゲーしか無いからUNITYで作るなと言われました
どうしたらいいでしょうか? >>540
ゲーマーが喜ぶようなゲームを作るにはUnreal Engineを使いましょう
Unityは簡単に安く低スペックでゲームを作れることが強みです インスタンスの説明はここでは無駄だと言ってるのに何で続けてるんだお前ら?
初心者を完全に理解させる説明するにはメモリー本体のハードウェアの話しと
メモリーのアドレス空間、そしてC言語のアドレスとポインタの説明が必要不可欠なんだよ。 >>535
具体的には、ヒエラルキー上で青色のf05_blazer_020_hに対して
うまくいかなかったものを、
メニューのGameObject -> BreakPrefabInstance
を実行して黒色にしたらうまくいくようになりました。
「インスタンス化したら」という表現は適切でない書き方でした。すみません。
たしかにヒエラルキーにあれば、黒も赤も青もインスタンスはインスタンスですね。
あれ?でも別のヒエラルキー上の青色のオブジェクトに対しては
別オブジェクトからgetComponentできてる・・・
うまくいったのは別の理由?と思ったけど、それ以外操作してないんだよなあ・・・ 何も理解してないことを認識できてよかったな
無知の知だよ >>544
いや、正直あんま理解せず使えるもんだから、まぁこうすりゃ動くねいままで作ってきた私には、理解した上で、先の説明は合点がいったw
上の先生方、ありがとう。 >>544
あほくさ
>>546
プレハブとのリンク切ったからGetComponentできるようになりましたなんて、ありえないよ
まあなにかほかの要因でしょう コンポーネント名が小文字から始まるものって見たことないな
エラー文 plz ■ このスレッドは過去ログ倉庫に格納されています