【ゲームエンジン】Unity初心者質問スレBuild1
レス数が950を超えています。1000を超えると書き込みができなくなります。
フリー版で開発したゲームは個人・法人を問わず追加のロイヤリティーなしで販売できます。 プラットフォームサポートは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質問スレッド35
https://mevius.5ch.net/test/read.cgi/gamedev/1523771570/ 勘違いしてるだけだ
おちつけ
あ、ここ初心者スレか >>851
ありがとうございます。勘違いという事で終わらせようと思います
>>all
スレ汚しすみませんでした ここで聞いていいのか分からんけど以前qiitaにunity物理演算で迷路を作る記事があったと思うんだが全く見つからない
もし同じものを見た人がいたら教えてほしい うーん、やっぱり納得いかない
教本にも初心者用サイトでも例えば "Hello,World"を表示させる内容が
スクリプトを書く→アタッチ→プレイ押して確認 だけ
自分の環境ではUnityに戻って.csのソース見ても更新されてない
必ず歯車ボタンのResetを押さないと反映されない
さんざ調べたけど「たまにある現象、歯車リセットで治るよ」的なのが2件程度
誰か原因解る方いませんかー! UnityのAuto Refreshがオフになってるとかは? >>856様
それでした!いけました!本当に有難うございます!!! unityで作ったゲームって何か動きもっさりしてるんですが、コンシューマのようにキビキビ動くの作るのって
デフォルトの機能では無理なんでしょうか? >>859
無料版でキビキビ動く超大作を作ることは可能
Unityが悪いのではなくお前の作り方が悪い >>868
それを聞かないと分からないレベルでは作れないので、まだ知る必要はないよ。他の事で時間を使って有意義に過ごしてください。 >>868
簡単に言えば広大なマップを作って負荷が掛からないように必要な部分以外は省略して読み込む
「必要な部分は省略して読み込む」の部分をどう実装するかがキモ つまり広大マップが元々想定されていない微妙な開発環境です。 1レベル1シーンのコンセプトがウケて広まったんだろ?広大マップが苦手でもいいじゃないか。馬鹿にしてるわけじゃないぞ。 広大マップって考えがそもそもエンジニアに向いてないよね
見えてない範囲も処理させる気なの? アセットを沢山買って配置すればオープンワールドになるでしょ >>874
Unityは複数のシーンの同時読み込みが出来るから別に苦手というわけでもない
簡単にオープンワールドやりたいなら適当な区画ごとにシーンを切り分けて
キャラの位置に応じて必要なシーンの読み込み処理書けばいいよ >>875
そうそう、unityは見えてない範囲も処理するのよ。エンジニアに向いてないよね。 画像の書き換えは見えてる範囲だけだろjk
キャラの計算は全部やるとしても >>877
それ今朝読んだ本に書いてあった。
loadsceneaddsyncだっけ?
LoadSceneAsyncだった。 ベイクしたライトがカレントのシーンしか有効にならないからなぁ
あまりマルチシーン前提の設計になってないのかな その辺気になり出した人たちはunrealに流れていって、Unityに残ってる人達はこのスレ見れば解る通り。 >>881
モバイル用が基本だから別に問題ないんだよ
なんなら今のソシャゲの殆どがマルチシーン無しの5系で動いてるし バージョン管理なんですが、マニュアルにperforce使うようにと書いてあるんですけど、無料版もありますか? 友人が作ったものをテストしてます
Radeonだと読み込めずにピンクになっちゃうんですけど原因はどんなのが考えられるでしょうか
GeforceにするかShaderをtextureにすると一応使えるんですが 初心者です
プレイヤー、弾、敵で全員にあたり判定もたせたらプレイヤーが弾出した瞬間にあたり判定もらって自爆するんですけどここだけあたり判定消せないですか?OnTriggerです あざす
レイヤー分けやってたんですけど言われてもっかいみたら2dゲームなのに調べたまんまphysicsでやっちゃってました >>885
perforce、5ユーザーまで無料みたいね。無事使えるようになったけど8時間くらいハマったわ。 2DのSpriteの仕様について質問
・クリックで2枚の画像が差し替わるという単純なもの
・差し替わった画像の位置が気に入らないからヒエラルキビューで座標などを修正した
・座標を修正したものはオブジェクトになっているから、これをD&Dでスクリプトに
入れる事が出来ない
・プロジェクトビューのスプライトは座標をいじれない
皆はスプライト制作の時点でズレのない完璧なものを作ってるんでしょうか? ん?
ある画像が表示されててそれをクリックすると別の画像に変わるものを作りたいのかな? >>896
そうです
色んな初心者用の本やサイトを見ても用意されてる画像は修正しなくても
良いものばかりで、それ前提で話が進められているので詰まってます。 >>895
editorで同位置同サイズで表示させればそのまま使えるようにしてあるよ
そもそもわざわざズラしたりサイズを変えたりする必要が無いし
実装に負担を掛けないアセット制作は基本やで ・・・どこを勘違いしてるのかがいまいちわからない
位置を修正したらもうそれで完了では?
その後に何がしたいのかわからない
もしもそれを量産したいならプレハブにぶっこんでおけばいいかと スプライトコンポネに画像Aを入れた時の位置を修正したいってことだろ
>>895は画像Aのファイルをヒエラルキーにドラッグしてゲームオブジェクトにしたあとそれの位置を変えることで対処しようとしたが当然元の画像の位置中心は変わりませんでしたと 自分が聞きたいのは >>900 さんの通りです
最終的なアプリの完成形はUnityの「Gameビュー」なわけですよね
それで、>>895 の通り「スプライトを差し替える」「でもなんか画像Bの位置が気に入らない」
そういった場合、皆は別ソフトで画像の修正や計算などをわざわざするのか?
Unityにはそういう機能は無いのか?と聞きたかった訳です
Scene画面でそういった座標やシェイプを修正した場合、それはもうSpriteでは
なくなる。要するに「Scene画面の実際のゲーム画面でこの位置がいいな、と
修正したオブジェクトをSpriteに戻してProjectビューに戻せないの?」
と言っているのです。 なぜなら、「スプライトを差し替えるスクリプト」をアタッチして
それに対してD&D出来るのは、Project欄にあるSpriteだけ。でもそれじゃあ
座標や形を修正したものを伝えることが出来ない。
Flashでは見た目を微調整しながらやってた事がUnityでは出来ない。
皆どうやっているのか?と聞いております。 やべえ
まじで言ってることがわからん
もっと具体的に教えて
具体的にどんな画像?
具体的にどんなことがしたいの? うんよくわからん
スプライト自体に位置情報を持てるかというと、シングルじゃなくてマルチにして切り取り範囲を微調整するか中心位置を微調整するかだと思うけど
画面見ながら微調整したいならもうそれ別のゲームオブジェクトにしちゃえば?
レイヤを手前にして サイズの違がう画像を複数スプライトに登録して、そのスプライトをクリックしたら切り替わる?
スプライトにスプライト登録できるの?
オブジェクトに登録? 絵を書いて説明出来ないから難しいね。じゃあ逆に質問させて
1)丸いボタンをオリジナル画像で作るよ!クリックするとボタンのグラフィックが変わるよ
2)ボタン画像はPNGで2枚用意したよ 画像Aと画像Bはまるっきり形もサイズも違うよ
そして、2枚の画像には全く同じ大きさの「+」のマークが入ってるものとする。
3)これをUnity上でボタンをクリックして画像を差し替えた時「+マークがぴったり重なって
いる」ようにするには皆はどうする? >>908
なるほどね
スプライトは基点を設定できるぞ
スプライトごとにね
デフォルトだと縦中心横中心だけど、
左上にしたり自在にカスタムできる
はい解決 補足 >>908 を元に、まず画像Aをオブジェクト化して画面に配置する。
で、オブジェクトAに「クリックしたら画像Bに切り替わる」スクリプトを
アタッチする。これって双方の「+」印を合わせるのは難しいよね?
そもそもこんな作り方しないのかな それぞれのスプライトの基点をその+にすれば解決だろ
頭固すぎ >>910
ちゃんとレス全部読んでるか?
もう答え出してくれてるぞ レス読んでるます。しかしピボットとか聞いたこと無い言葉がわんさかで...
要するにスプライトエディタ勉強しろって事ですよね。教本では
「これを押してスライスします」くらいの事しか書いてなかったもんで。
答えてくださった皆様どうもありがとうございました 今日のUnity道場見てたけど行列の話が出てから
「なるほどね(わからん!)」という感じだ! 質問です
プログラミング経験が全くないモデラー志望の学生なんですが、Unityでシェーダー弄ったり、
レンダリング、VRchatのセットアップ等で使用したいと思っているんですが、
これらの機能はプログラミングの知識がないとできないですか?
またこれらの機能を学習するにはどの書籍を購入すればいいでしょうか?
あとUnityは3つライセンスありますが、
どのライセンスでもPencilなどのプラグインは使用できるんでしょうか? >>916
ここは基本的に初心者に毛が生えたワナビが初心者にマウント取って楽しむ場所だから質問するには適切じゃないよ
3D関係のスレやTwitterで似たような分野をやってる人を探して情報を漁ってみたりリプ飛ばして聞いてみるのがおすすめ >>916
プログラムの知識ないとできないです。
知識を得ることはできます。自主勉強ね。
プラグインはその製作者に聞いてください。 オブジェクトを移動させたいとき、
これだと瞬間移動になってしまうのですが、
何秒間かかけて移動させたいときはどうすればいいのでしょうか?
よろしくお願いします
Transform cameraTrans = GameObject.Find("オブジェクト").transform;
Vector3 pos = cameraTrans.position;
pos.x = pos.x + 10f;
pos.y = pos.y + 10f;
pos.z = pos.z + 0f;
cameraTrans.position = pos; >>919
Vector3 pos = cameraTrans.position;
pos.x = pos.x + ax × time.deltaTime;
pos.y = pos.y + ax × time.deltaTime;
pos.z = pos.z + ax × time.deltaTime;
axの値を大きくすると早くなり、小さくすると遅くなる。
translate等、他にもある。 >>919
毎フレーム『新しい位置=現在の位置+速度×経過時間』を行う
目的地と所要時間が決まってるならDOTweenみたいなTweenライブラリ使うと楽だよ public class AlphaScript : MonoBehaviour {
public void SetCanvasGroupEnable(CanvasGroup canvasGroup, bool enable)
{
if (enable)
{
canvasGroup.alpha = 1;
canvasGroup.interactable = true;
canvasGroup.blocksRaycasts = true;
}
else
{
canvasGroup.alpha = 0;
canvasGroup.interactable = false;
canvasGroup.blocksRaycasts = false;
}
}
}
このスクリプトに対して4行目 if (enable) を他スクリプトから変えるには
どのような書き方をすれば良いのでしょうか 宜しくお願いします 変えるんじゃなくelse文の方を実行させるには
別のスクリプトでどうやって書けば良いのでしょうか? GameObject.FindObjectOfType< AlphaScript >().SetCanvasGroupEnable( null, false ); >>926 様
通りました!速レスありがとうございます! 通ったけど(VSでは)実行するとNullReferenceExceptionエラーになります
>>926 SetCanvasGroupEnable(null, false); なので、
>>923 (CanvasGroup canvasGroup, bool enable) のcanvasGroupが
nullになってしまってるからですよね? 引き続き回答待ちます
>>923 >>925 です 第一引数に何を書いたら良いか判りません
宜しくお願い致します 外から呼ぶのにコンポーネント要るとか二度手間じゃね?
canvasGroupはAlphaScriptのAwakeででも取得してboolだけにしろよ
てかコピペだけして中身の意味が分からないとか最悪じゃねえか
何してんだ一体? 二度手間とかどうでもいいです ソースの意味はわかってます
サイトで便利ってあったから使ってみたいんですよ
>>926 GameObject.FindObjectOfType< AlphaScript >().SetCanvasGroupEnable( null, false );
は"からかわれた"でいいんですよね? では↑の一時引数には何と書けばよいのですか? からかわれた訳じゃなくてそれもひとつのやり方として正解
意味が分かってるならnullの代わりは何だか分かるだろ? nullの代わり...皆、なかなか答え出してくれませんねw
でも今まで浮かばなかった検索候補、調べてきまーす 答自分で書いてるし、メソッドの意味が分かってない以上無駄やな
正直に全然意味が分からないと言えば、929あたりが教えてくれたかもなあ すげえ意地悪だね? ずっと
public void SetCanvasGroupEnable(CanvasGroup canvasGroup, bool enable)
の「CanvasGroup canvasGroup, に対しての書き方が解らない」って言ってるでしょ?
ここ初心者スレじゃないの?なのになんで皆質問を質問で返したり
回りくどいヤな言い方しかしないワケ?
nullの代わりなんか解らんし見つからなかったよ。質問文見りゃどの程度かくらいわかるでしょ 質問自体がおかしいなら どこがどう考え方が間違ってる とか、
こういうサイトのこの部分を勉強しろとか言ってくれてもいいじゃない >>937
質問したら礼ぐらいしてから次の質問したらどうですか?
常識ないんですか?
わざとやってるんですか? >>939 あなたこそわざとやってるのですか?
自分に対するレスはどれも回りくどく、どれも正解を書いていない
馬鹿にするレスもある。教えてくれたと思ったレスには>>927
ちゃんとお礼言ってるが、それに対して >>929 この返信
自分が非礼だと言うのなら、>>923 以降でどのレスが気に入らなかったのか
言ってくださいよ 落ち着け。
回答者の言葉尻を捉えて腹立てるんじゃない。教えてほしいから聞いてるんだろ、華麗にスルーしなさい。どこもこんな人達はいっぱいいるよ。
あと、分かってるなら答えがわかるはず、と分かってるけどnullは分からない、は完全にすれ違ってるの。
どう違ってるか改めて真摯に聞いてみなさい。
まずは自分がどう考えているかでも辻褄が合ってないところ、そういう説明がないと明確に答えられないし、面白がってヤジが群がるぞ。 >>940
おいおいおいw
>929の返信は失礼な要素ないと思うが? ...取り乱しました。>>941 様
まずUIなどを階層に収めた"オブジェクトA"を作りました。
これをAlpaを使って表示/非表示にするテストを行いたく、AlphaScript(拾い物コピペ)を
"オブジェクトA"にアタッチしました。
さて、作っているアプリを動かすメインスクリプトをアタッチした"オブジェクトMain"
があります。ここから"オブジェクトA"のAlphaScriptにアクセスし、"オブジェクトA"の子であるUI
なども一緒に透過されるかテストしてみたいのです。しかし困った事に
>>926 >>928
GameObject.FindObjectOfType< AlphaScript >().SetCanvasGroupEnable( null, false );
このソースの"null"の部分、"null"ではエラーが起こってしまう、でも自分は
"null”以外にスクリプトエディタに怒られない文字列を知らない。
"null"の意味は知ってるが、じゃあ代わりに第一引数にどんなワードを入れたら良いのか
解らない。教えていただけませんか?と、ずっと言っております。
自分はunity初心者で、教本も"Unity5の教科書"を一通りやった程度で、
C#の本については購入検討中です。高いし。
なので、経験者の皆様には言っている事がまるでおかしいかのかもしれませんが、
解る方おられましたらどうか宜しくお願い致します ソースの意味はわかっています( ・`ω・´)キリッ 自分は単純に"オブジェクトA"の"AlphaScript"に「false」を伝えたいのですが、
GameObject.FindObjectOfType< AlphaScript >().SetCanvasGroupEnable( null, false );
ではスクリプト自体がnullになってしまう。でもその代わりを知らない。
そもそもCanvasGroup canvasGroup,自体はいじる必要が無い。
この後の bool enable をfalseにしたいだけなのに、
Ascript.SetCanvasGroupEnable(ここ,false);
ここに何か入れなきゃならないようです。falseだけにしたら
SetCanvasGroupEnableがアカンって怒られるし...この場合、どういった記入を
したら良いのでしょう? canvasGroupはGameObject.FindObjectOfType< CanvasGroup >()で取ってこれないのか >>946 様
有難うございます。オブジェクトMainに
MainGameObject.FindObjectOfType<CanvasGroup>().alpha = 0;と書いた所
Gameシーン上で透過されるのを確認しました。
しかし、勿論これは良いのですが、AlphaScriptはなんの働きもしてませんよね?
後々いじるのに便利そうなので、使ってみたいのです。となると、単純な疑問が
浮かんできます
A public void SetCanvasGroupEnable(CanvasGroup canvasGroup, bool enable)
このスクリプトAに対し
B FindObjectOfType<AlphaScript>().SetCanvasGroupEnable(num,false);FindObjectOfType<AlphaScript>().SetCanvasGroupEnable(「ここ」,false);
Bの「ここ」は、何と書いたらVSに怒られず通るのでしょうか。 >>948 の訂正 すみません、ミスしたので訂正させて下さい
>>946 様
有難うございます。オブジェクトMainに
MainGameObject.FindObjectOfType<CanvasGroup>().alpha = 0;と書いた所
Gameシーン上で透過されるのを確認しました。
しかし、勿論これは良いのですが、AlphaScriptはなんの働きもしてませんよね?
後々いじるのに便利そうなので、使ってみたいのです。となると、単純な疑問が
浮かんできます
A public void SetCanvasGroupEnable(CanvasGroup canvasGroup, bool enable)
このスクリプトAに対し
B FindObjectOfType<AlphaScript>().SetCanvasGroupEnable(「ここ」,false);
Bの「ここ」は、何と書いたらVSに怒られず通るのでしょうか。 >>949
「ここ」には、CanvasG roup型を入れる。
いやー参った。こんな型宣言して使ったことなかったから調べるだけでも精一杯w
まぁ知らなくても3Dのシューティング作れたしw
とりあえず動いたので多分あってるんじゃないかなぁ、間違ってたらすまん。 レス数が950を超えています。1000を超えると書き込みができなくなります。