2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

【3Dゲームエンジン】Unity質問スレッド21

1 :名前は開発中のものです。:2015/11/18(水) 00:53:16.90 ID:6AegDlBR.net
3Dゲームエンジン「Unity」の質問に優しく答えるスレです。
Windows/Mac用。JavaScript/C#といった汎用言語を使用できるのが特徴です。
フリー版で開発したゲームは個人・法人を問わず追加のロイヤリティーなしで販売できます。
プラットフォームサポートはiPhone/iPod Touch/iPad、Mac、PC、Web、Wii、Xbox360、Android、PlayStation 3、PlayStation 4、PS Vita他

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

■本スレ
【3Dゲームエンジン】Unity総合スレッド27 [転載禁止](c)2ch.net
http://peace.2ch.net/test/read.cgi/gamedev/1441891966/

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

●リンク
・Unity(日本公式サイト)
http://unity3d.com/jp
・ユーザーガイド
 http://docs.unity3d.com/ja/current/Manual/UnityManualRestructured.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質問スレッド20 [転載禁止]©2ch.net
http://peace.2ch.net/test/read.cgi/gamedev/1444194744/

361 :名前は開発中のものです。:2015/12/03(木) 22:18:51.09 ID:YLpL1k0k.net
>>359
やっぱ2DでもZ軸を使っちゃうのが楽そうよね
ゲームによっては、ライトとかちょい修正が必要かもしらん

362 :名前は開発中のものです。:2015/12/03(木) 22:35:53.21 ID:wMT3LI/N.net
ニコニコなんとかってとこにいる奴らのデータ使うの気持ち悪いなんとなく

363 :名前は開発中のものです。:2015/12/03(木) 23:57:00.86 ID:wGCZChKT.net
>>357
一応、12月8日にリリース予定だってよ

364 :名前は開発中のものです。:2015/12/04(金) 00:01:01.03 ID:WI4Qgc9H.net
今日の俺ぼけてるわ>>359
手前のほうがZ小さいから数値逆だわな
ともかく「基準値-Y/100な」どで計算してZに突っ込めば

>>361
重なり順で真っ先に思いつくのがCSSのz-indexだったもんで
これが個人的には分かりやすいし楽な手法だわ
ライトは確かに気をつけなきゃいけないね。意識してなかったわ、ありがとう

365 :名前は開発中のものです。:2015/12/04(金) 00:20:21.05 ID:JhBH9r/s.net
>>363
サンクスもうすぐだな
今作ってるやつはそれで作れそうで助かった

366 :名前は開発中のものです。:2015/12/04(金) 00:27:18.50 ID:9jpyH600.net
5.5の2D強化が楽しみだぜ

367 :名前は開発中のものです。:2015/12/04(金) 01:42:59.89 ID:qTSzVmde.net
なんかエディタ上では問題なく動いてるのにWebプレイヤーやスタンドアロンでビルドすると挙動おかしくなるな
Webプレイヤーの方はGetAxisの入力が離しても0に戻らない感じで
スタンドアロンの方は一部オブジェクトが動かない

368 :名前は開発中のものです。:2015/12/04(金) 10:54:59.53 ID:NNnsdri/.net
Unityはソシャゲ・ブラウザゲー用、UE4はコンシューマ・PCハイエンドゲーム用
もう完全に棲み分けが始まって両者ともこの方向性で進んでる

369 :名前は開発中のものです。:2015/12/04(金) 11:00:16.75 ID:519YdUSN.net
まぁいいことだよね

370 :名前は開発中のものです。:2015/12/04(金) 11:27:45.35 ID:KcUV2OvH.net
住み分けが始まっているというよりは最初からそういうものなんだよなぁ
Unityが開拓した「お手軽に3Dゲーを作る」っていうエンジン市場をUEが侵食しようとしてる

371 :名前は開発中のものです。:2015/12/04(金) 11:48:11.08 ID:x5se+V8Z.net
結局どっちでも使える知識に進んでくものだし
切磋琢磨の発展はユーザにも嬉しいな

372 :名前は開発中のものです。:2015/12/04(金) 14:44:20.21 ID:YiKbNb6/.net
どっちかに縛られず両方覚えればいいじゃんって感じ
C++とC#なら両立は楽だし

ただUE4はまだ未完成感あるから様子見した方がいいかもね

373 :名前は開発中のものです。:2015/12/04(金) 14:48:53.83 ID:YZpvL1m9.net
5.1から使い始めた初心者です。
質問なのですが、MacのEl CapitanにOSをアップグレードしてからか
最近やたらUnityが重いです。
よく見たら、Unityエディタの右下に青いバーがあり、なにか処理をしているっぽいのです。
「7/11 Light Transport 5 jobs」など、〜 jobs という表示で、何種類かあるようです。
前から出ていたものかもしれませんが、公式リファレンスで「jobs」で検索しても何もヒットしないのですが
このバーは何でしょうか?
これのせいで重い気がするのですが・・・なかなか処理が終わりそうにありません。
環境は3年前の秋に出たMacBook、Retinaのやつです。メモリは16Gで今のところ十分足りてます。

374 :名前は開発中のものです。:2015/12/04(金) 15:00:13.62 ID:a7mz3d1a.net


375 :名前は開発中の物です。:2015/12/04(金) 15:02:20.65 ID:DDRlSPWz.net
>>356
>>359
>>361
アドバイスありがとうございます!

359さんのxyzの連動ってどうすればいいのでしょうか?メカニムでやるのでしょうか?
四方向の移動設定はわかるのですが、メカニムでやった時X,Yの設定しかできないようだったので。

376 :名前は開発中のものです。:2015/12/04(金) 15:03:16.41 ID:a7mz3d1a.net
>>373
なぜjobsで検索w
unity light transportでググるとなんかでてくるとおもうよ

377 :名前は開発中のものです。:2015/12/04(金) 15:34:49.24 ID:YZpvL1m9.net
>>376
たしかにその方が良かったかもです・・・
公式リファレンスで検索したところいろいろ出てきたのですが、どれが関係してるのかわからず…
Google先生に聞くべきでした。

その結果、どうやら大きいキューブがあることが原因っぽいような、そうでもないような・・・
大きいキューブ4つを消してみたら多少は改善されました。
ありがとうございます。

378 :名前は開発中のものです。:2015/12/04(金) 16:21:57.97 ID:XLTAUkIE.net
UnityそのもののUIの大きさとかフォントサイズとか変更したいんだけど、何でググって良いのかさえわからなくて困ってます。

【Unity UI】とかで検索するとinspector部分とかの文字サイズじゃなくてゲームのUIをカスタマイズするページばかりが引っかかってしまいます。
PC買い換えたら解像度が上がったせいでソフトウェアのUIが軒並み小さい…

379 :名前は開発中のものです。:2015/12/04(金) 16:54:04.59 ID:LhrOBBwU.net
>>378
できない。
来年5月に5.4でRetina対応した時に何とかなるのかもしれない、という期待もある。
http://forum.unity3d.com/threads/how-to-change-font-size-in-unity-editor.149481/

380 :名前は開発中のものです。:2015/12/04(金) 17:22:48.86 ID:YZpvL1m9.net
C#での動かし方の質問です。

マップ上を自動で歩き回る敵のオブジェクトを作ろうと思っています。
各方向に壁があるかを調べるために、本体から前、左右、後の4方向に判定を伸ばします。
そのうち、例えば前方と右に壁がないことがわかった時、その2方向からどちらかを抽選して
そちらに移動する・・・ということをやりたいと思っています。
その時、前方は60%、左右は30%、後ろは10%など変化をつけたいと思っています。

それぞれの判定が壁にぶつかったかどうかの判定はできると思うのですが、
その中から「壁にぶつかった」ものを選び、その中で抽選をする・・・という部分が
どうやるべきかがなかなか思いつきません。

こういう時に使うべき命令や、手法など、ヒントでもいいので頂けると助かります。
C#、というかプログラム自体が勉強し始めたばかりなので
ifやforを使って変数をこねくり回すのがやっとというくらいなので
わかりやすい言葉で教えていただけるとなお助かります。

381 :名前は開発中のものです。:2015/12/04(金) 18:05:32.87 ID:XLTAUkIE.net
>>379
素早い回答ありがとうございます。
画面全体の拡大率を上げつつ対応を待ってみようと思います。

382 :名前は開発中のものです。:2015/12/04(金) 18:55:00.77 ID:LhrOBBwU.net
>>380
unityっていうよりアルゴリズムの話の気はするがな。
壁にぶつかったもの、じゃなくて壁にぶつからなかったもの、だろう。
命令的に使うべきものはRandom.Range(a,b)くらいだ。

例えばだが

前後左右に壁判定をして結果がbool[4] detectとかに格納されている。壁があればtrue
float[4] weightにそれぞれ前・右・左・後の順で重み付けが格納されている
として

float total=0f;
for(int i=0;i<4;i++){
if(detect[i]==false)total+=weight[i];
}
float probability = Random.Range(0,total);
int direct;
for(direct=0;direct<3;direct++){
if(detect[direct]==false)total-=weight[direct];
if(total<0)break;
}

とかやればdirectが0なら前、1なら右〜という結果が残る。
探索距離にもよるが全方面がふさがっていた場合どうすんのかとかそういう問題はあって
ゲームの内容によってはこのままではバグ化することは考えられるが。

383 :名前は開発中のものです。:2015/12/04(金) 19:05:04.10 ID:LhrOBBwU.net
しまった、Random.Rangeのフロート版とイント版の範囲を勘違いしてた
if(total<=0)break;
だな

384 :380:2015/12/04(金) 19:26:31.30 ID:YZpvL1m9.net
>>382
なるほど!
基本的な命令だけでここまでできるんですね…ちょっと感動しています。
配列は使ったことはないですが、書かれていることは概ねわかる範囲です。
ちょっと下から2番目のifの行が難しいけど…
5行目のprobabilityで有効な方向のウェイトの中から抽選してるのはわかります。
でもその後使わない??
うーん、わからない部分もあるけどちょっとやってみます!
光明が見えたのと、プログラムってすげー!って思ったよありがとうございます!

385 :名前は開発中のものです。:2015/12/04(金) 19:29:02.93 ID:LhrOBBwU.net
>>384
ゴメン、そこも間違ってるw
for(direct=0;direct<3;direct++){
if(detect[direct]==false)probability-=weight[direct];
if(probability<=0)break;
}
だな

386 :名前は開発中のものです。:2015/12/04(金) 19:39:09.72 ID:YZpvL1m9.net
>>385
理解できました!(たぶん!)
あと、for文ってこう活用するのかと目から鱗です。
ありがとうございます、プログラム難しくてへこたれそうになってたけどやる気出てきたよ!

387 :名前は開発中のものです。:2015/12/04(金) 19:43:36.95 ID:WI4Qgc9H.net
>>375
そのメカニムで移動させた直後に、別途自身の座標取得して書き換えるだけですよ
こんな感じ↓で

Vector3 pos = obj.transform.position;//objは移動させたキャラ自身(GameObject)
pos.z = 1f - pos.y / 100;//キャラ描画の奥行き基点を1.0としてます
obj.transform.position = pos;

…というか移動でtransform.positionいじるはずだから、そこにzも一緒に放り込む処理追加するだけかと

388 :名前は開発中のものです。:2015/12/04(金) 22:00:38.05 ID:t/zKap4N.net
コントローラーで操作できるようにしたかったのでこんな感じに書いてみたのですが、
ベクトルの大きさを表示してみたところ、上下左右をぴったり入力すると1と出ますが
斜め入力だと最大1.5ぐらいの大きさになってしまいました。
ゲームパッドのジョイスティックって三角関数のような円単位で表せられるものでは
ないのでしょうか?
そうであれば斜め入力で上下と等速にするためには、加筆しないといけないですよね。



private Vector2 JoyStick;

void Update () {
JoyStick = new Vector2 (Input.GetAxis("Horizontal") , Input.GetAxis("Vertical"));

if (JoyStick.magnitude > 0) {
transform.position += transform.forward * JoyStick.x * Time.deltaTime;
transform.position += transform.right * JoyStick.y * Time.deltaTime;
}
print (JoyStick.sqrMagnitude);
}

389 :名前は開発中のものです。:2015/12/04(金) 22:33:23.42 ID:LhrOBBwU.net
>>388
アナログスティックはともかく十字キーはOnかOffだけだろう。
まぁ加筆自体は
JoyStick = new Vector2 (Input.GetAxis("Horizontal") , Input.GetAxis("Vertical"));
joyStick.Normalize();
だけでいいだろうが。

390 :名前は開発中のものです。:2015/12/04(金) 22:36:03.89 ID:LhrOBBwU.net
ああ、それじゃダメか…
if(joyStick.sqrMagnitude>1)joyStick.Normalize();
かな

391 :名前は開発中のものです。:2015/12/05(土) 01:09:13.49 ID:Ip323cCd.net
Macでの質問です。
El Capitanにアップデートしたところ、今まで使っていた痛MonoDevelopが起動しなくなりました。
痛の方を使っていた理由は、日本語入力ができるからです。
一度削除して入れ直してみても同様で、起動しようとすると原因不明のエラーで落ちます。

そこで、いろいろネット上を調べると、Xamarin Studioなら日本語入力できるとのことで
早速入れてみました。
バージョンは5.10.1でおそらく最新です。
しかし、日本語入力はできませんでした。
El Capitanで日本語入力のできている環境の方、いらっしゃいますか?
また、解決法などわかる方いましたらお願いしますm(_ _)m

392 :388:2015/12/05(土) 02:00:05.01 ID:iKztX7xZ.net
>>389
質問の意図をうまく表現できなくて申し訳ありません。
変数名がジョイスティックなのでアナログではないです。
せっかくジョイスティックを使うので、傾きを考慮して
最大値を1とし、中間の傾きも考慮したいために
質問した次第です。

393 :名前は開発中のものです。:2015/12/05(土) 02:36:03.65 ID:tPuulIVh.net
こんな感じで2D格闘ゲームみたいにアニメーションに併せて箱の組み合わせで当たり判定を付けたいのですが
http://www.capcom.co.jp/blog/sf4/development_blog/2011/02/22_3050.html
アセットストアなどに良さそうなものないでしょうか?
今はBOXコリダーを置いてon/offでやってるのですが膨大になりすぎて…

394 :名前は開発中のものです。:2015/12/05(土) 02:58:27.63 ID:B0/pRd/x.net
>>392
機器としてのジョイスティックが吐き出す縦軸横軸の数値が
君の言う円単位的なもの(恐らく正規化されているかということだと思うが)
になっているかと言われると恐らく違う。
物理的な作りにもよると思うが基本的に斜めに倒せばX=1 Y=1の数値を吐き出す。
イマドキのゲームパッドについているアナログスティックも大体同様だろう。
斜めに倒せばベクトルの大きさはルート2=1.414とかになる。

395 :名前は開発中のものです。:2015/12/05(土) 03:17:31.29 ID:qe0RLnbZ.net
>>391
一通りやってみた
確かにmono developでは日本語入力対応してなかったし
Xamarinも惜しいとこで入力できなかった
でも痛、、の方は動いたし、日本語入力できたよ
動かないというのがどう動かないのかわからんから調べようがないけど
未認証アプリは動作しない設定のせいだったらFinderでアプリケーションから
右クリックで開く、から1度でも動かしとけばいけると思う
そうでないなら動作しない状況を教えて

396 :名前は開発中のものです。:2015/12/05(土) 03:21:17.22 ID:qe0RLnbZ.net
あ、動いた痛のほうのバージョンは5.9.6ね

397 :391:2015/12/05(土) 09:45:01.07 ID:Ip323cCd.net
>>395
ありがとうございます。
動かないという部分を詳しくいうと
・Unityから起動しようとしたら真っ白いウィンドウが1秒くらい出た後に消え、
 「MonoDevelop-Unity が予期しない理由で終了しました。」と表示が出る
・Finderから単体を起動しようとしても同じ
・古いのを消し、新しいものを「けいごのなんとか」ブログから落としてきてインストール後
 開こうとすると「ネットから落としたものだけどいい?」と聞かれるので許可
 →同じようにFinderからでもUnityからでも「白いウィンドウ→予期しない理由で終了」となる

今気づいたのですが、昨日ブログにあるリンクから落としたものはFinderで情報を見ると
5.9.4となっているのが気になります(5.9.6ではない?)
Finderから「情報を見る」でバージョン確認でも5.9.6になっていますか?

El Capitanは10.11.1、環境はMacBook Pro (Retina, 13-inch, Late 2013)、メモリは16Gです

398 :名前は開発中のものです。:2015/12/05(土) 11:30:18.55 ID:A+8m8HuO.net
Unity5.1のカラーピッカーの質問です。

HSVの理解が足りてないのかもしれませんが、
HSV(0,255,255)とHSV(359,255,255)って別の色の筈ですよね?

Unityのカラーピッカーで359を指定して、
一旦カラーピッカー閉じて開くと0に戻っていて、
なんだか359と0を同一にしているような気がします

というかHexColor見ても、
HSV(0,255,255)でFF0000
HSV(359,255,255)でもFF0000
なので、

もしかして、UnityのHSVバグってます?
それとも自分の計算と頭がバグってます?

よろしくお願いします

399 :名前は開発中のものです。:2015/12/05(土) 12:31:35.64 ID:0UL6qy5F.net
>>398
推測なんだが内部的にHSVの形では保存していないのだろう。
実際UnityEngineにはHSVカラーの構造体とかないしね。
HSVのインターフェース部分だけがHSV構造体をもってるだけで
実際にシリアライズされてるデータは変換されたColor32だったら
359=0という処理をしていても不思議ではない

400 :名前は開発中のものです。:2015/12/05(土) 15:59:48.53 ID:vToW6z9I.net
3Dサウンドに関して質問です。
動画のサウンドは3Dサウンドに対応していないのでしょうか?

401 :名前は開発中のものです。:2015/12/05(土) 16:47:24.16 ID:ocXKSXt2.net
スマホ実機で実行してみたら画像がそれぞれにしょぼくなってました
画像の1つにオーバーライドにチェック入れてTruecolorにしたら
直ったけど全部の画像にこれやるのが普通なんでしょうか?

402 :名前は開発中のものです。:2015/12/05(土) 17:36:38.15 ID:TKKOGjwy.net
>>401
複数選択で一度に変更できるよ
フォルダ細かく分けてるとめんどいけど

403 :名前は開発中のものです。:2015/12/05(土) 17:44:36.90 ID:ocXKSXt2.net
ありがとうございます!
まとめて変更できたとは
メモリ使用量がちょっと心配だけど全部変更しちゃいます

404 :名前は開発中のものです。:2015/12/05(土) 18:24:43.14 ID:6BZRm6u4.net
複数のSpriteからAnimationClipを動的に生成したい
http://www.gaprot.jp/pickup/tips/unity5_for_2d/

> Sprite アニメーションの AnimationClip を作るには
> UnityEditor パッケージに含まれているクラスを使う必要があり、
〜中略〜
> いざ Build を行う際には UnityEditor パッケージは Build の対象外となるため
> Build が出来ないという結果で終わってしまいます。

上で話題になってた2D強化って、ここら辺の仕様も変わるんだろうか
Clip数百個とか作りたくないなぁ

405 :名前は開発中のものです。:2015/12/05(土) 21:40:07.17 ID:iKztX7xZ.net
>>394
よく見たら1.5ではなく1.15ぐらいでした。
数値的には納得いかないのですが、以下のコードにて無事に動作しました。
ありがとうございました。

private Vector2 JoyStick;
void Update () {
JoyStick = new Vector2 (Input.GetAxis("Horizontal") , Input.GetAxis("Vertical"));

if (JoyStick.magnitude > 1) {
JoyStick.Normalize ();
}
transform.position += -1* transform.forward * JoyStick.y * Time.deltaTime;
transform.position += transform.right * JoyStick.x * Time.deltaTime;
}

406 :名前は開発中のものです。:2015/12/05(土) 22:52:19.63 ID:5cP0RmJy.net
>>391
>>397
もう解決したかもしれないけど。
「MonoDevelop-Unity 5.9 Preview Release」でググったら出てくる
Unity Communityのやつをダウンロードすると幸せになれるかも。
上のフォーラムの「Minimun Requirements」に記載されているバージョンが
あなたの使っているUnityの条件に合えばだけど。

今のところうちのEl Capitanでは普通に日本語打てるし動作も問題ない。
ちなみに数日待つとUnity5.3が出るけどそれには上のMonoDevelopが含まれるってさ。

407 :391:2015/12/05(土) 23:56:34.22 ID:Ip323cCd.net
>>406
おおお!幸せになれました!
そこのをダウンロードしてみて、開く前に情報を見たところ
やっぱりなぜか「5.9.4」となってて、あーまたダメか…と思ったんですが
こっちは開くことができ、日本語入力もできました!
ありがとうございます!

408 :391:2015/12/06(日) 00:04:50.30 ID:SqhYBxP8.net
ちなみに開いてからAbout MonoDevelopで確認するとちゃんと5.9.6になってる…謎

409 :398:2015/12/06(日) 12:37:32.08 ID:Xo25Ei6c.net
>>399
ありがとうございます〜
コード書いてると、RGBよりHSVの方が出番多いような気もするので、
気持ち悪いなーと思ってしまいます

410 :名前は開発中のものです。:2015/12/06(日) 12:53:57.93 ID:M7EELMn9.net
>>408
痛のほうも同様だy,多分中身は同じと思うコアの部分はね

411 :名前は開発中のものです。:2015/12/06(日) 13:41:50.12 ID:uKAERiPd.net
ネット麻雀みたいなのを支えるBaasでやすいのってないかな?
Photon程のリアルタイム性がなくていい代わりに安くてUnityから使いやすいのがほしいんだけど・・・・だれか教えて!

412 :名前は開発中のものです。:2015/12/06(日) 14:44:59.63 ID:698J1662.net
Google App Engineかな
Datastoreの使い方間違うと課金膨れ上がるけど、上手くやればユーザ増えるまでは無料枠で捌けると思うよ

413 :名前は開発中のものです。:2015/12/06(日) 18:17:22.09 ID:uKAERiPd.net
Google App Engineは確かに忘れてました
料金を調べてみます
趣味でゲームを作ろうと思っているのですが毎月数万円マイナスだときついので安ければ安いほど助かるんです

414 :名前は開発中のものです。:2015/12/06(日) 18:24:04.50 ID:tut05Xyo.net
void OnCollisionStay(Collision col)
{
if (col.gameObject.name == "Cube(Clone)")
{
Destroy(gameObject);
}
}

このScriptを破棄したいオブジェクトAにアタッチして
Cube(Clone)に接触したらオブジェクトAを破棄するようにしているのですが
"2つ以上のCube(Clone)と接触したら破棄する"といった条件はどう書いたらいいですかね?

415 :名前は開発中のものです。:2015/12/06(日) 19:02:41.83 ID:5yO0Yl9X.net
新しいPCにUnity入れたんだけど30分毎に落ちる・・・

416 :名前は開発中のものです。:2015/12/06(日) 19:23:47.40 ID:y/4U1a0N.net
>>414
いくつぶつかっている、みたいなのを判別してくれる便利関数はない。
自分でCollisionEnter,CollisionExitとかで数えるしかないな。

417 :名前は開発中の物です。:2015/12/06(日) 19:45:59.82 ID:z4APy23j.net
>>387
すいません、スクリプト自体はコピペで書いてある文字は全然わからないです・・・。
下のスクリプトで動かしているのですが、どう書けば良いのでしょうか・・・
void Update () {
if(animator)
{
float h = Input.GetAxisRaw("Horizontal");
float v = Input.GetAxisRaw("Vertical");
walking = true;
if (h > 0) {
directionX = 1;
directionY = 0;
} else if (h < 0){
directionX = -1;
directionY = 0;
} else if (v > 0) {
directionX = 0;
directionY = 1;
} else if (v < 0){
directionX = 0;
directionY = -1;
} else {
walking = false;
}
if (walking) {
transform.Translate(new Vector3(directionX, directionY, 0) * Time.deltaTime * 0.5f);
}
animator.SetFloat("DirectionX", directionX);
animator.SetFloat("DirectionY", directionY);
animator.SetBool("Walking", walking);

418 :名前は開発中のものです。:2015/12/06(日) 20:11:29.30 ID:M7dP0Kw0.net
クイズに答えるだけで「プログラミングの勉強」ができるWebサービスたちにハマる!
http://plus.appgiga.jp/masatolan/2014/07/29/53133/
小学生でもゲーム制作を可能にするWeb統合エディタ「Tynker」が、
むしろ大人がハマると話題に!
http://plus.appgiga.jp/masatolan/2015/06/05/56144/
3Dゲームを直接ブラウザ上で制作・公開可能な「Goo Create」が楽しすぎる!
http://plus.appgiga.jp/masatolan/2014/11/28/54632/
プログラミングの勉強を本気でWebゲーム化した「CodinGame」が時間泥棒確定!
http://plus.appgiga.jp/masatolan/2014/10/03/53923/
スマホで、プログラミングが勉強できる3Dロボット対戦「Hakitzu」がヤバ過ぎる!
http://plus.appgiga.jp/masatolan/2014/12/12/54802/

419 :名前は開発中のものです。:2015/12/06(日) 20:39:51.98 ID:c7kqWhqV.net
題名があると読まなくていい記事だと判断できて便利だな

420 :名前は開発中のものです。:2015/12/06(日) 20:56:01.16 ID:mgi24f37.net
自作のクラスの、他のクラスからの読み込みについて質問です。

2Dシューティングゲーム - 第04回 敵を作成しよう
https://github.com/unity3d-jp-tutorials/2d-shooting-game/wiki/%E7%AC%AC04%E5%9B%9E-%E6%95%B5%E3%82%92%E4%BD%9C%E6%88%90%E3%81%97%E3%82%88%E3%81%86

上記チュートリアルの「Spaceship.cs」は、
使う際は下記のようにインスタンス化?できています。(自分で試しても出来ました)
//----------------------------------
public class Player : MonoBehaviour
{
// Spaceshipコンポーネント
Spaceship spaceship;
IEnumerator Start ()
{
// Spaceshipコンポーネントを取得
spaceship = GetComponent<Spaceship> ();
spaceship.Shot (transform);
//---

対して、今自分で作ったソースでは下記のようにしないと
インスタンスがnullだと言われてエラー終了してしまいます。
//----------------------------------
public void Save() ←実際に使うメソッド
{
Spaceship spaceship = gameObject.AddComponent<Spaceship>();
spaceship.save(text);
//---

この挙動?の違いはどこからくるのでしょうか。
ご教示お願いしますm(_ _)m

421 :名前は開発中のものです。:2015/12/06(日) 22:07:18.04 ID:e8MyX0tc.net
>>420
GetComponent<T>()はそのスクリプトが動いているGameObjectにアタッチされているTコンポーネントを取得する、なければnullが返る。
AddComponent<T>()はそのスクリプトが動いているGameObjectにTコンポーネントをアタッチして追加されたものを返す。
つまりそのスクリプトが動いているGameObjectにSpaceshipコンポーネントがアタッチされていないだけだと思う

とりあえずヒエラルキーでそのGameObjectを選択し、インスペクタからSpaceshipを追加すれば動くよ
このような別のコンポーネントがないとまともに動かないスクリプトの場合、付け忘れを避けるために[RequireComponent(typeof(T))]をつけておくといい

余計なお世話かもしれないが学び始めなら公式のマニュアルとリファレンスは読む習慣をつけることをお勧めしとくよ
わからない名前が出たらとりあえずググって公式のマニュアルとリファレンスを読めば自己解決出来るケースが増えるから自分のペースで開発出来る様になる
いちいち躓いて人に聞いてたらゲーム作る前に嫌になって挫折しそうな気がするから自己解決の方法を多く持つのは習得への近道だと思うよ

調べてもわからない事が出てきたらまたここに聞きに来ればわかる範囲で答えるから頑張れ

422 :名前は開発中のものです。:2015/12/06(日) 22:08:56.62 ID:tut05Xyo.net
>>416
ありがとうございます
下のScriptで無事出来ました〜

int hitNum = 0; //cubeと接触した回数

void OnCollisionEnter(Collision col)
{
if (col.gameObject.name == "Cube(Clone)")
{
hitNum += 1; //接触したら接触回数を1増やす

if(hitNum >= 2) //接触回数が2回以上でオブジェクトを破棄
{
Destroy(gameObject);
}
}
}

423 :名前は開発中のものです。:2015/12/06(日) 23:00:24.87 ID:jPU/1I8Z.net
ここまで丁寧に説明してくれる人がいる事と
それまでの無知全開の流れに良くも悪くもこのスレらしいなと思うのです

424 :名前は開発中のものです。:2015/12/06(日) 23:02:21.00 ID:mgi24f37.net
>>421
チュートリアルの方調べたら、ご指摘の通りPlayerのprefabにスクリプトがアタッチされていました。
よくわかりました。

リファレンス、自分では調べたつもりなのですが折れるのが早いのかもしれません…
マニュアルは途中まで読んで飽きてチュートリアルに移ってしまったので、
読破するようにしますorz
助かりました、ありがとうございます!

425 :名前は開発中のものです。:2015/12/06(日) 23:11:08.96 ID:mgi24f37.net
リファレンスにバッチリ載ってますね…
なんで見なかったんだろうorz

426 :名前は開発中のものです。:2015/12/07(月) 00:03:16.79 ID:6i/uTLhj.net
>>424-425
マニュアルもリファレンスも全文読む必要はないというか読んでも最初はわからない単語だらけで理解出来ないで飽きると思う

チュートリアルなどをやっててわからなくなったらその部分を見る方が実体験に基づいて調べるから見落としにくいし覚えやすい
個人的には調べたついでに類似メソッドとの違いを把握出来るとより好ましいと思う

例えばGetComponent<T>を調べたらGetComponents<T>やGetComponentInChildren<T>などを理解しておくと応用が利くといった具合

小さなことから少しずつ覚えて行けばそのうち全体が把握出来る様になるさ

427 :名前は開発中のものです。:2015/12/07(月) 00:38:10.47 ID:nzWuz8jB.net
複数のオブジェクトを仮置きしておいたのを、
いっぺんに指定のprefabに置き換える方法ってありますか?

428 :名前は開発中のものです。:2015/12/07(月) 01:17:30.55 ID:kAr350d2.net
>>417
少なくともコピペしたコードが何をしてるのか理解しようとしてみましょう
そうすればできることがどんどん増えていきますよ

transform.Translate(new Vector3(directionX, directionY, 0) * Time.deltaTime * 0.5f);
ここで移動後の位置を設定してるのはわかるよね?
この「Vector3(directionX, directionY, 0)」がX,Y,Zの指定です

で、ここのZ(今「0」が設定されてる)を直接変えたいところだけど、
「Time.deltaTime * 0.5f」がかけてあり、0.5秒あたりの移動量で設定されてるから、
このtransform.Translateの処理直後に↓これ突っ込んでみたらと

Vector3 pos = transform.position;//今いる場所のxyz
pos.z = 1f - pos.y / 100;//z変更。キャラ描画の奥行き基点を1.0としてyで計算
transform.position = pos;//変更したxyzを上書き

プレイヤー以外のキャラが動くならそちらの処理にも対処入れておかないといけないね

あと2Dということはマップチップも配置してるよね?
ならばマップチップの座標にもZが要るかもね(マップチップは層が違うから基点を変える必要ありです)
マップなどはレイヤーで管理してるとは思うけど…影響がでるなら配置時に設定が必要

そもそもz使って管理するのがメカニムと相性良いかどうかは微妙だけど、作り次第かな

429 :名前は開発中のものです。:2015/12/07(月) 01:19:27.31 ID:Uj4/ZsVJ.net
>>427
置き換えられる側のStartやAwakeで置き換えればいいんでないの?
Editorの話?

430 :名前は開発中のものです。:2015/12/07(月) 03:17:41.06 ID:2ZS+ix9z.net
Editor想定でザクッと書いてみた
using UnityEngine;
using UnityEditor;
public class ReplaceToPrefab : EditorWindow {
[MenuItem(

431 :名前は開発中のものです。:2015/12/07(月) 03:28:42.76 ID:2ZS+ix9z.net
ミスったので以下に置いてきた
http://www.dotup.org/uploda/www.dotup.org642133.txt.html
なお、ヒエラルキー上での順序等細かなことはしていない適宜修正されたし

432 :名前は開発中のものです。:2015/12/07(月) 03:42:13.20 ID:2ZS+ix9z.net
>>431
自己レスすまん使い方書き忘れ、眠くてダメぽ

ソース読めばわかると思うが、一応以下使い方
メニュー>Window>ReplaceToPrefabという項目を選択
出てきたウインドウで置換先のプレハブを指定する
ヒエラルキーで置き換えたいオブジェクトを全て選択
Replaceボタンをクリックで置き換える

テキトーに書いたためアンドゥが出来ない
細心の注意を払いつつ自己責任で使ってくれ

433 :名前は開発中のものです。:2015/12/07(月) 12:28:22.25 ID:OKonrqZH.net
質問です。

c#初心者で勉強中なのですが、よく使うであろう処理を関数にしてみようと思いました。
必要な時はそれに値を入れて、戻り値?をもらうような。
そこで、疑問が湧きました。
その「これこれこういう処理を○○という関数にする」という書き方はたぶん調べればわかるんですが
それを書いたスクリプトは、どこにどう置いておくものなのでしょう?
Unity上の、おそらくシーン上に置く必要がありますよね。
例えばその処理を実際に使用するスクリプトの上の方にでも書いておけばいいのでしょうか?
そうすると他のスクリプトからもその関数を使用する場合、わざわざ他のGameObjectを参照して…とか
やらなければいけないのでしょうか?
根本的なことだと思うのですが、調べ方もよくわからず困っています。
わかる方いましたら教えていただけると助かります。

434 :名前は開発中のものです。:2015/12/07(月) 12:56:19.37 ID:Uj4/ZsVJ.net
>>433
いや、プロジェクトに含めて置けばクラスとして参照できるよ
便利関数をまとめとくだけなら、とりあえずstatic classにして静的メソッドとしておけば良いかと。

public static class Utils{
public static int Hoge(){
return 123;
}
}
別ファイルから「Debug.Log(Utils.Hoge())」とすれば123が得られる

435 :名前は開発中のものです。:2015/12/07(月) 13:00:57.01 ID:Uj4/ZsVJ.net
調べ方だけど、とりあえずC#の基礎でぐぐればまとまったサイトいくらか見つかるだろうから、分かる範囲で斜め読みしておけば良いかと
Unityスレで言語の基礎知識聞くとスレ違い扱いされて仕方ないところなので、基礎的な質問はプログラム板で初心者スレ探してみて

MonoBehaviourやコンポーネント絡むとあちらではスレ違い扱いされるので、この辺はぐぐって出てくるのがUnityかどうかで判断すればいいかと

436 :名前は開発中のものです。:2015/12/07(月) 13:15:25.29 ID:5Zo01j7L.net
unity5.2.1p4において、
player settingのiOS のsplash imageの設定で、
規定のサイズの画像を入れた後にXcodeで書き出して実機テストすると、
端末サイズ(自分の場合640×1136)のsplashの後に
640×960のsplashが表示されて困ってます。
(端末と画像の解像度が違うので画像が潰れている)
おそらくsplash画像をフェードアウトさせる為にunity側でsplashを表示してると思われるのですが、
解決方法はありませんか?

437 :433:2015/12/07(月) 13:16:24.23 ID:OKonrqZH.net
>>434,435
ありがとうございます。
プロジェクトフォルダに置いておけばいいのですね。
関数を作ってやってみます。

質問に関しては、Unity上のどこに置くのだろう?という質問だったのでここで聞きました。
不適切な質問でしたらすみませんでした…

438 :名前は開発中のものです。:2015/12/07(月) 16:24:10.23 ID:IwWiwmZk.net
ゲームオブジェクトにアタッチするC#スクリプトで、
public変数を幾つかのグループ(この場合は効果音)に分け、
それぞれインスペクター上で折りたたみ表示にしたいと思います。

現在、以下のように内部にクラスを用意し、それを実現しています。

public class Player : MonoBehaviour
{
  [TooltipAttribute("効果音")]
  public SoundEffects sfx;

  [System.Serializable]
  public class SoundEffects
  {
    [TooltipAttribute("効果音:攻撃")]
    public AudioClip attack;

    [TooltipAttribute("効果音:ジャンプ")]
    public AudioClip jump;
  }
}

このコードでは SoundEffects クラスがありますが、一度しか使われておらず
なんだかモヤモヤしてしまいます。
より簡潔な書き方があれば教えてください。

エディタ拡張のFoldOutも考えましたが、変数をグループ分けするだけだと
ちょっと大げさすぎるように感じました。
([SerializeField]のような属性で表現できるなら良いのですが)

439 :名前は開発中のものです。:2015/12/07(月) 16:42:56.04 ID:RRr2nEu0.net
>>438
折りたためなくてもいいなら[Header("効果音")]でもつけておけばいいと思う

折りたたみたいならエディタ拡張で表示を弄るかクラスを作るしかないが、インナークラスにせずにEnemyクラスとかで使いまわすとか再利用する事は想定されないのかな?

440 :名前は開発中のものです。:2015/12/07(月) 17:27:37.38 ID:IwWiwmZk.net
>>439
最初はHeaderにしてたんですけど、
数が多くなるとどうしてもゴチャゴチャしちゃいまして。
変数グループ毎にスクリプトを分けてアタッチ、なんてのも試してました。

あ、もろちん使い回せる部分は使いまわせるようにしています。

441 :名前は開発中のものです。:2015/12/07(月) 18:41:47.89 ID:kAr350d2.net
>>437
俺はプロジェクトのAssetsの中にScriptsってフォルダ作ってそこにcsファイル入れてるわ
他にもSpritesやPrefabsなどなど、判りやすく分類してる

あと、シーン上のオブジェクトに関連付けて使うクラスなら、
そのスクリプトをプロジェクトから掴んで該当オブジェクトにドロップすればいいっすよ

ここらへんのやり方はチュートリアルで説明あるからやったら分かるんじゃないかな

442 :名前は開発中のものです。:2015/12/07(月) 20:10:24.38 ID:kAr350d2.net
あー、>>441は見当違いなレスだ
なんか読み間違いしてた、すみません

443 :名前は開発中のものです。:2015/12/07(月) 21:03:24.78 ID:jBIJTjjk.net
自分が向いている方向(青軸)を0度として、
相手のオブジェクトのある位置の角度は求められるのですが
それが右側にあるのか、左側にあるのか、Angleを使って求めると
分からなくなってしまうのですが、いい方法はないでしょうか?

444 :名前は開発中のものです。:2015/12/07(月) 21:08:47.05 ID:jBIJTjjk.net
連投すいません、右側、左側というのは、
青軸を0度として数学で言う第一象限〜第四象限の
どの位置にあるかを求めたいということです。

445 :名前は開発中のものです。:2015/12/07(月) 21:24:14.87 ID:x8ZuNdat.net
XZ平面で三角関数解けや

446 :名前は開発中のものです。:2015/12/07(月) 21:41:52.72 ID:mrT5kF6m.net
>>443
transform.rightとターゲットへのベクトルの内積が正なら右、負なら左

447 :名前は開発中のものです。:2015/12/07(月) 22:17:22.32 ID:s5RZFjAL.net
くっそつまらんことで2週間ほど頭悩ましてるんやが、
指定したボールをボタンを押すたびに時計回りで同じ強さで発射したい

AddForce(initialVector, ForceMode.Impulse);

でinitialVectorの強さをかえると方向は変わるんやが、強さもかわっちまう。強くなる。
で、色々調べてrotateを変更すればとあるが変更してもなんら変わりなし。
rotate(0,20,0)とかrotate(20,0,0)

たぶん何らかの前提となる知識が必要なんだと思うけど、道筋だけでも教えてくれ

448 :名前は開発中のものです。:2015/12/07(月) 22:50:12.03 ID:kAr350d2.net
>>447
Rotateで向きを変えて、AddForce(transform.forward * 20.0f)でどうだろうか
※20.0fは強さね

transform.forward で今の向き取得できるから、そこにチカラ加えてあげればいいんじゃないかな

449 :名前は開発中のものです。:2015/12/07(月) 22:56:30.23 ID:jBIJTjjk.net
>>446
すぐに内積の事が出てこないとか恥ずかしい限りです。
ありがとうございました。

450 :名前は開発中のものです。:2015/12/07(月) 23:03:38.90 ID:s5RZFjAL.net
>>448
返信どうも

ボタンが押されたら実行
{
CreateDummyBall();
_dummyBall.transform.Rotate(new Vector3(10, 0, 0));
//_dummyBallController.transform.Rotate(new Vector3(10, 0, 0));
_dummyBallController.Shot(Vector3.forward * 10);
}

private void CreateDummyBall()
{
_dummyBall = (GameObject)Instantiate(this.dummyBall, Vector3.zero, Quaternion.identity);
_dummyBallController = _dummyBall.GetComponent<dummyBallController>();
}

shotの中では

this.GetComponent<Rigidbody>().AddForce(initialVector, ForceMode.Impulse);

これでうまくいかん・・・
何が腐ってるんだろうか・・・
コメントアウトも試した

怪しんでるのはthis.GetComponentと_dummyBallの紐付き

451 :名前は開発中のものです。:2015/12/07(月) 23:24:44.15 ID:kAr350d2.net
>>450
shotのAddForceを
AddForce(transform.forward *10, ForceMode.Impulse)ではだめですか?

452 :名前は開発中のものです。:2015/12/07(月) 23:29:23.77 ID:s5RZFjAL.net
>>451
ごめんなさい

変に省いちゃったのがだめだった

public void Shot(Vector3 initialVector)
{
this.GetComponent<Rigidbody>().AddForce(initialVector, ForceMode.Impulse);
}


ってなってるんだ

で、先ほどのコードはこのショットを呼び出してる

453 :名前は開発中のものです。:2015/12/07(月) 23:53:25.18 ID:kAr350d2.net
ごめんね、考え汲み取れなくて

じゃあ、
 _dummyBallController.Shot(Vector3.forward * 10);
  ↓
 _dummyBallController.Shot(_dummyBall.transform.forward * 10);
こうではないのん?
上で回転させた&打ち出したいボールは_dummyBallですよね

個人的には、shotに強さと向きを引数で渡して、
shotの中で回転させて、AddForceでforwardに強さかければスマートな気はします

454 :名前は開発中のものです。:2015/12/08(火) 00:00:36.93 ID:YWarlEDs.net
>>453
こちらこそ省いて申し訳ない

>上で回転させた&打ち出したいボールは_dummyBallですよね

ですです。そうですね、ご指摘のとおりの実装が正しいと思います。

で、Startメソッドの中で_dummyBall.transform.forwardを取得すると

"(0.0, 0.0, 1.0)"

_dummyBall.transform.Rotate(10f, 0f, 0f);

実行後に_dummyBall.transform.forward

"(0.0, -0.2, 1.0)"

という値が取れて思うように回転してくれないっすね

この辺に関しては回転の概念を学ばなくてはならなそうです

455 :名前は開発中のものです。:2015/12/08(火) 00:08:29.98 ID:LZ7q6pwb.net
壁だらけのダンジョンを歩き回る敵のアルゴリズムをちまちま作ってて、納得がいく動きになったから
意気揚々とマップに5体くらい配置してみたら途端に変な動きをするようになった・・・

単体だと問題ないけど複数配置しておかしな挙動になるってことは、ひょっとしたら
変数の値を共有しちゃってるのかな?と思ってc#入門とかを見ると
省略するとprivateになると書いてあるので、当てはまらなそうです(publicな変数は特に使ってません)

こういう現象って他にどんな原因が考えられますかね…??

456 :名前は開発中のものです。:2015/12/08(火) 00:25:15.51 ID:YWarlEDs.net
>>454
自己解決

Rotateとは軸となる座標を指定するというのが味噌
Rotate(0,10,0)であれば、Y座標に軸、つまりこまみたいなイメージ
そこから指定した数字だけ回転(角度)する

457 :名前は開発中のものです。:2015/12/08(火) 00:27:27.59 ID:YWarlEDs.net
>>455
情報が少ない気がする

458 :名前は開発中のものです。:2015/12/08(火) 00:32:23.88 ID:lHB0dUDl.net
>>454
ああ、そうだ…すみません
最初に向いてる方向がZ方向だからそれを目的の時計回りになるところに
まず軸を初期化しないと、だ

ギズモが 
  ↑Y
←□→Z
  ↓   の状態でやるとわかりやすいけど、球のXを変えて力を加えれば球のZ方向に向かって動きます

なのでshotするのが自機だとしたら自機の向きでボールの向きを初期化してから
目的の向きへ回転させて力を加えてください

459 :名前は開発中の物です。:2015/12/08(火) 01:27:43.17 ID:LoOIpgPp.net
>>428
アドバイスありがとうございます!
z値を利用した画像の前後ができました!

まだプレイヤーを上に動かすと他のオブジェクトより手前に出たりとか・・・。
上下キー以外にも、左右も押すだけでz値が奥行ってしまったりとか。
動画撮ってみました。元が趣味のアカウントで、申し訳ないのですが一番上の三つの記事
が今日の成果物です・・・。
http://8biskets.tumblr.com

460 :名前は開発中のものです。:2015/12/08(火) 01:49:12.14 ID:k3T2AEQg.net
>>455
static変数を使ってると見た

461 :名前は開発中のものです。:2015/12/08(火) 02:21:41.66 ID:tKLb4rQn.net
質問です。
ボールがあって、床を転がっている間に減速させたいのですが、
摩擦で遅くしようとすると壁に当たった時に(入射角と反射角の)角度が一致しなくなります。
モンOトのように動いて欲しいのですが摩擦で調整することは無理なのでしょうか?

最近始めたばかりの初心者なので、初歩的な質問だったらごめんなさい・・。

総レス数 1001
331 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
read.cgi ver.24052200