トップページgamedev
1002コメント420KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2016/01/11(月) 01:24:43.29ID:r4suKLTg
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質問スレッド21
http://peace.2ch.net/test/read.cgi/gamedev/1447775596/
0014名前は開発中のものです。2016/01/13(水) 13:31:57.31ID:VqYoBuzo
なんでよく知らないのに書くんだろう…
0015名前は開発中のものです。2016/01/13(水) 13:37:31.68ID:2ZlhPTps
前スレ >>999
レスありがとうございます。
自前で用意するしかないようなので、もう少し Animator 周りを調べてみます。
0016名前は開発中のものです。2016/01/13(水) 14:06:36.40ID:V7WW9YF0
>>13
Close()呼べばFlush()されるので明示的に呼ぶ必要はないというのは正しい

ただしusingステートメント使えばClose()も明示的に呼ぶ必要はない。
>>6のソースだと途中で例外が発生した場合Closeされないのでusingステートメントを使うのがいいと思う
0017名前は開発中のものです。2016/01/14(木) 00:30:32.20ID:ktxMKZ7s
>>7ですがまだ完全とは言えませんがとりあえず何割か改善しました
パーティクルのエフェクトにソートの設定を付けたら良くなりました
0018名前は開発中のものです。2016/01/14(木) 12:12:38.26ID:dtN67MUT
複数シーンを扱えるようになったけど、
別シーンのオブジェクトを変数で参照しておくと、新しいインスタンスが作られてしまう。

基本的にシーンまたぎの参照はできないのですか?
0019名前は開発中のものです。2016/01/14(木) 13:13:10.39ID:w22A5JmG
できない。
0020名前は開発中のものです。2016/01/14(木) 18:27:33.47ID:QcoLVpo7
スクリーンと各オブジェクトのwidth, heightについて、
WorldPointで取得した値の相関関係?が実際のpixelサイズの比率と異なっており、悩んでいます。
http://i.imgur.com/QTSXcQL.jpg

◆スクリーンサイズ
・実際の値
 w 560, h 800
・ログ出力した値
 w 1.7, h 2.4
 > Vector2 size = Camera.main.ScreenToWorldPoint(new Vector2(Screen.width, Screen.height))
  or
 > Vector2 size = Camera.main.ViewportToWorldPoint(new Vector2(1, 1))

◆背景画像サイズ
・実際の値
 w 1345, h 951
・ログ出力した値
 w 8.07, h 5.70
 > Vector2 size = this.GetComponent<SpriteRenderer>().bounds.size

背景画像の横幅は、スクリーンサイズの2倍ちょい程度なのですが
WorldPointで出した数値は1.7 : 8.07となってしまいます。
背景画像にscaleを加味したとしても、4.84で比率が合いません。

サイズの取得方法について、何か間違いがありますでしょうか。
ご教示お願いしますm(_ _)m
0021名前は開発中のものです。2016/01/14(木) 19:28:10.58ID:5fQyllGr
>>19
ありがとうございます。
0022名前は開発中のものです。2016/01/14(木) 20:04:37.28ID:xdOodcu9
>>20
「なにがしたいか」も書いた方が質問の意図が伝わるんじゃないかなと思った
そもそも意味がわからないけどね
0023名前は開発中のものです。2016/01/14(木) 20:43:54.47ID:w22A5JmG
>>20
色々わからん部分もあるので恐らく、だが

まずスクリーンの方についてだがカメラのSizeが2.4になっている、
というだけの話であろうかと思う。

次にスプライトの方だがのインポート設定のピクセルパーユニットが100になっているはずだ。
つまりエディター内での1の大きさに100ピクセル入るようになっている。
だから1345のスプライトなら横13.45の大きさのオブジェクトになる。
それに0.6のスケールをかけると8.07になる
0024名前は開発中のものです。2016/01/14(木) 20:46:11.55ID:QcoLVpo7
>>22
意味不明でしたか…すみません

やろうとしていることは、スプライトのドラッグ時に移動可能範囲を定めたいです。
範囲設定自体は下記で出来ています。

 > Mathf.Clamp(現在値, 最小値, 最大値);

例えば画面より小さいサイズのスプライトが画面からはみ出ないようにするためには

 > // xの場合 (スプライトの中心±幅の半分で、スプライト全体をはみ出さないようにする)
 > 座標最小値 += スプライト幅 / 2
 > 座標最大値 -= スプライト幅 / 2

で出来ました。

今は>>20で書いたマップのような、
画面より大きいスプライトの移動制限をかけたいと思っています。
小さいのとは逆で「常にスプライトが画面に収まるように」したいです。
計算としては下記で出来ると考えています。

 > // xの場合 (一旦中心に戻して、スプライトと画面の大きさの差分だけを可動範囲にする)
 > 座標最小値 += (画面幅 / 2) + (スプライト幅 - 画面幅)
 > 座標最大値 -= (画面幅 / 2) + (スプライト幅 - 画面幅)

これが上手く行っておらず、各値をLogで出したところ、
肝心の画面幅やスプライト幅の数値が怪しいことに気づき、
質問した感じです。
0025名前は開発中のものです。2016/01/14(木) 20:52:35.61ID:QcoLVpo7
>>23
ありがとうございます
各数値の意味を理解していませんでした…
マニュアル見てきますorz
0026名前は開発中のものです。2016/01/14(木) 21:02:23.68ID:w22A5JmG
>>25
まぁ訳わからなくなりがちなので0.6とかのスケールをかけるのではなく
スプライトのスケールは1にしておいた方がいい。
恐らくカメラのSizeを変えるという方法をとらず
スプライト側の大きさを変えてしまったということなのだろうが。
スプライトのスケールを1にしてカメラのSizeを4にすればいい。
大体今と同じような見え方になるはず。
そしてワールドでの座標値とスクリーン座標値の比率は1:100になる。
0027名前は開発中のものです。2016/01/14(木) 21:07:51.86ID:QcoLVpo7
>>26
ありがとうございます!
マニュアルめくってる…というかクリックしまくっている最中なのですが
画面のwidth, heightと、スプライトのwidth, heightは
カメラのサイズとスプライトのスケールを考慮してそれぞれ補正しないと
等価なスケール?の数値として扱えないということでしょうか
0028名前は開発中のものです。2016/01/14(木) 21:14:59.66ID:4szDTpIZ
画面上にgameobjectが存在するか確認したいのですが、わからないです。


例えば、「敵」というオブジェクトを消滅して、画面に存在するか確認したいのですが
0029名前は開発中のものです。2016/01/14(木) 21:17:16.82ID:DcDqZSER
>>28
Findとは違うの?
0030名前は開発中のものです。2016/01/14(木) 21:17:25.44ID:w22A5JmG
>>27
カメラのサイズはワールドの中でのどの範囲を描画するかを決める。
Sizeを4にすればカメラが平行で0,0,0にあるとして上下4の範囲を描画する。
つまり縦8の領域を描画する。
それをいくつのピクセルとして描画するのか、を決めるのが画面のWidth,Heightの設定だ。
Height800にすればワールドの縦8を800ピクセルで描画する。
スプライトはあくまでワールドの中に置かれるものだからそれが何ピクセルのものかは
どうでもよくてワールドの中でどのような大きさのものなのかが問題になる。
0031名前は開発中のものです。2016/01/14(木) 21:18:59.06ID:Q45i/G7c
UNETでNetworkManagerのuse Network Simulatorをチェックしたままでビルドすると
Clientが謎のtimeoutsで落ちるんだな、数時間悩んだよ
0032名前は開発中のものです。2016/01/14(木) 21:27:26.71ID:w22A5JmG
>>28
Renderer.isVisibleを使うかもしくはOnWillRenderObject()を使う
http://docs.unity3d.com/ja/current/ScriptReference/Renderer-isVisible.html
http://docs.unity3d.com/ja/current/ScriptReference/MonoBehaviour.OnWillRenderObject.html
0033名前は開発中のものです。2016/01/14(木) 21:28:10.64ID:4szDTpIZ
>>29

findしてもずっとnullが出ます…
0034名前は開発中のものです。2016/01/14(木) 21:29:01.49ID:QcoLVpo7
>>30
非常によくわかりました。重ね重ねありがとうございます
全スプライトの設定を見なおしてみます(´;ω;`)

>>28
動かしてる時にヒエラルキーウインドウを出すようにしておけば
実行中にインスタンスが残ってるかどうか確認できるけど
そういうことではなく?
0035名前は開発中のものです。2016/01/14(木) 21:30:53.47ID:4szDTpIZ
>>29

ゲーム起動してプレハブで生成したものを確認したいのですが、出ないですね
0036名前は開発中のものです。2016/01/14(木) 21:34:39.25ID:4szDTpIZ
>>34
プログラム側で確認したいです


やろうとしている事は

プレイヤーが球を発射して
連射出来ないように球が画面にある間は
球を発射出来ないようにしたいのですが、
生成した球の存在チェックをプログラム側でどうすればいいのか…
0037名前は開発中のものです。2016/01/14(木) 21:39:00.91ID:w22A5JmG
>>33
生成したときにリストとかに突っ込んで管理する。
0038名前は開発中のものです。2016/01/14(木) 21:40:13.17ID:QcoLVpo7
チェックはこれですかね
http://baba-s.hatenablog.com/entry/2014/08/19/222641
0039名前は開発中のものです。2016/01/14(木) 21:45:19.65ID:DcDqZSER
弾クラスでstatic intな変数を用意して、Awake()で+1、OnDestroy()で-1
あとはこの変数が0のときにのみ発射できるようにするとかどうよ
パワーアップアイテムとかで連射可能になったときも対応できるし
0040名前は開発中のものです。2016/01/14(木) 21:51:49.27ID:4szDTpIZ
皆さまありがとうございます!

取り敢えず>>37の生成したものを管理して存在チェックしたらいけました

ありがとうございます!

他の方のやり方も試してみて納得いくやり方でやってみます!
0041名前は開発中のものです。2016/01/14(木) 22:13:33.92ID:Q2ZA3yWj
>>36
目的がシンプルなのでやり方は色々あるね
例えばUnityEventメンバ変数持てばインスペクタやスクリプトからも処理を追加出来る様になる

public class Ball{
public UnityEvent Destroy;
void OnDestroy(){
Destroy.Invoke();
}
}

public class Player{
int ballcount
void Shoot(){
if(ballcount>=maxBallCount)return;
Ball b =.Instantinate(prefab);
b.Destroy.AddListener(OnBallDestroy);
//射出時の処理諸々
ballcount++;
}
void OnBallDestroy(){
ballcount--;
}
}
0042名前は開発中のものです。2016/01/14(木) 22:16:58.59ID:Q2ZA3yWj
スマホで直打ちしたら諸々不備が多いな、すまんね
0043名前は開発中のものです。2016/01/14(木) 22:56:15.90ID:xdOodcu9
質問する時は最初から
 やろうとしている事
 そのために書いたコードまたは手法
両方書けば応える方もさらっと理解できるよ
より向いた手法があったらそういう助言もできるし
0044名前は開発中のものです。2016/01/15(金) 00:11:45.72ID:VE1n1Pig
まあ、結局はせっかく書いた前提条件とか一切関係なしに
最後の2行くらいで適切な回答をされることも多いけどなw
0045名前は開発中のものです。2016/01/15(金) 00:17:55.20ID:hT1xBee/
>>36
一番簡単なのは、固有のタグつけてタグの有無見るのが一番手っ取り早いよ
>>41のやり方は拡張性が高い半面、管理もしっかりしないし、コード書く手間とアルゴリズム抜けを
イチイチ気にしないといけないから、俺はお勧めしないな
0046名前は開発中のものです。2016/01/16(土) 06:45:49.18ID:hMQbMJn+
前スレでカプセル化について質問したものです。
教えていただいた通り、オブジェクトの分類を理解するためにも、
カプセル化していってみようと思います。遅レスすいませんでした。

>初心者がカプセル化なんて知ってるわけがなかろう

javaのチュートリアルサイトにカプセル化の記載があり、
C#とjavaは言語などが非常に似ているとの事でしたので、
初めて3ヶ月程度というのもあり、質問させていただいた次第です。
0047名前は開発中のものです。2016/01/16(土) 10:35:21.23ID:6vYU6itD
ん、ま、がんばれ
でも本気でUnityやる気ならC#がいいぞ
WEB上でjavaでのサンプル&資料はすごく少ない
0048名前は開発中のものです。2016/01/16(土) 14:29:08.17ID:pIjhD6Wk
こんな僻地のスレにも業者現れるとか2chいよいよヤバいだろ
ひろゆきが暴れるわけだわ
0049名前は開発中のものです。2016/01/16(土) 22:30:24.46ID:D6eJ+oJm
ソリティアのクリア画面みたいな
画面をクリアせずに延々と書き足し続ける演出をUnityでやりたいのですが、
何か手はありますかね。恐ろしく非効率的な方法としては、残像の数だけ生成…
0050名前は開発中のものです。2016/01/16(土) 22:39:27.38ID:+Tq113Aa
パーティクルがまさにそうなんでは
0051名前は開発中のものです。2016/01/16(土) 22:47:36.89ID:ESSHHt4c
>>49
単純にカメラのクリアフラグをnoneにするだけで出来るでしょ
0052名前は開発中のものです。2016/01/16(土) 23:38:56.52ID:33or0W7w
どこかのゲームがすでにやってそうだけど、3Dゲームが見やすくなる表示方法思いついた。
http://imgur.com/Ii5cy4z
↑みたいに4方に立体的な杭を立てれば操作キャラの方向がわかりやすくなるよね?
0053名前は開発中のものです。2016/01/17(日) 00:02:49.86ID:+43sny4h
質問が複数あります

@GetComponent<Light>().colorで、Direction Lightの色をスクリプトから変更しようとしましたが
「Lightにcolorの定義が含まれておらず、型'Light'の最初の引数を受け付ける拡張メソッドが見つかりませんでした。usingディレクティブまたはアセンブリ参照が不足しています。」
と出ます。
どのようにすればスクリプトからLightの色が変えられるのでしょうか?

ASpaceボタンを押したときに効果音が再生されるようにスクリプトを組みましたが、音がなりません。
ListenerはMain Cameraに設定し、スクリプトを組み込んだゲームオブジェクトとともに座標を(0,0,0)に設定してあります。
Audio Listenerのチェックボックスはオンになっています。
鳴らそうとした音声ファイルはwav形式です。

audioSource.PlayOneShot(sound); だけではなく、audioSourse.Play();でも試してみましたが、こちらも音が鳴りませんでした。

Bアイテム(Item_fireというタグを付けています)に接触したときに
floatの値(fireという名前にして、初期値は1です)を、1増やそうとして、OnCollisionEnterで接触したときに増やそうとしたのですが、一気に13や14も増えて困っているのですが、どうすればいいでしょうか?
OnTriggerEnterを使って、衝突したときに増やす方法や、座標が重なったときに増やす方法(重なったら重なったアイテムをDestroyで消して、1だけ増やそうとしました)も試しましたが、結果は同じでした。
非常に初心者的な質問で申し訳ないんですが、だれか回答をお願いします……
0054名前は開発中のものです。2016/01/17(日) 00:47:08.26ID:HM7CiyDS
UNETでバイオ5みたいなco-cpのやり方とかは見かけるんですが、
Client/Server方式でserverが座標やオブジェクトのスポーンなどの
数値データを送受信している方式を見かけないのですが、どなたか
サンプルや解説などを載せたサイトをご存じないでしょうか?
0055名前は開発中のものです。2016/01/17(日) 00:48:01.70ID:XD9ZIbZ3
Bには思わずわろたw 14回とか接触判定発生してるからに決まってんだろw
Destoryはフレームに最後に解決されると思ってプログラム書かないとダメ
無理やりぶっ壊すこともできるけど、その辺は人それぞれじゃないかな

Unity基礎知識が足りてないみたいだから、複数のチュートリアルしっかりやるか、
検証兼ねながら一つづつ確認してったほうがいいよ
0056名前は開発中のものです。2016/01/17(日) 00:57:41.87ID:KYCpO1zf
>>53
@俺のところではその文のままで変更できる。using UnityEngineと書いていないとかか。
A俺のところでは普通に鳴る。そこにある情報に音が鳴らない理由は書かれていない
BそういうのはフラグをもっておいてOnCollisionEnter内ではフラグを立てるだけにしておいてUpdate()内で処理する
0057名前は開発中のものです。2016/01/17(日) 01:09:49.70ID:/C9FtGOs
>>52
ランドマークか
0058名前は開発中のものです。2016/01/17(日) 01:12:24.15ID:/C9FtGOs
5.4使ってみた人、どんな感じ?
0059名前は開発中のものです。2016/01/17(日) 01:19:05.89ID:+43sny4h
>>55
回答ありがとうございます。
接触の判定が14回発生しているせいで無駄に加算されているということなんですね

ttp://www.dotup.org/uploda/www.dotup.org702264.jpg.html

上記のような感じで、一回増やしたら増やさないようにif文で止めようとしたんですが
それでもダメでした。単純にUnityの仕様を理解してないだけなんでしょうか?

>>56
回答ありがとうございます。
using UnityEngineは書いてあるんですが、それでもダメでした。再インストールもしましたが
ダメでした。
0060592016/01/17(日) 01:22:34.67ID:+43sny4h
>>59
連続でレスしてすみません。
先ほどチェックしたら@の問題はなぜか解決してました。
0061名前は開発中のものです。2016/01/17(日) 01:34:49.74ID:DAlQvnAS
OnMouseDragをアタッチしたオブジェクトが2つ重なってる状態で
order in layer等優先度を適宜設定してるにも関わらず
常に優先度が一番下のオブジェクトしか反応しなくて悩んでいます。

オブジェクトが重なっている場合の、ドラッグ時の優先度の設定はどのように行うのでしょうか。
0062名前は開発中のものです。2016/01/17(日) 02:13:35.93ID:+kzMhI7R
>>52
気になる。何に対する杭なの?
0063名前は開発中のものです。2016/01/17(日) 05:57:11.69ID:D8rmv3fX
>>53
殆どttp://www.ne.jp/asahi/kenji/pda/のUnityの所に乗ってるよ。
0064名前は開発中のものです。2016/01/17(日) 06:28:48.09ID:UxvOqHZn
この人プロだから。4時間だけでここまでやるくらいだから。
0065名前は開発中のものです。2016/01/17(日) 06:50:18.59ID:lacF+cXD
webページだいけどw
0066名前は開発中のものです。2016/01/17(日) 09:18:42.57ID:OULLJDow
>>57
やっぱりすでにやってるゲームはあったんだね
>>62
東西南北を示す杭。分かりにくいけど、北を示す杭は赤く塗ってあるわ。
画面の隅っこに出してるコンパスより分かり安くなるかな、と
今のアイデアのままだと没入感が薄れるのが難点だけど
0067名前は開発中のものです。2016/01/17(日) 09:42:48.67ID:YnhJRfyz
現実世界には東西南北を示す杭なんてない一般的な知る術は太陽の位置
Unity5でSUNの機能が充実してるから太陽の位置や陰の出来方で方向を知るのがより現実に近いw
0068名前は開発中のものです。2016/01/17(日) 10:03:06.89ID:fgh+HXHY
>>66
年輪だろ
0069名前は開発中のものです。2016/01/17(日) 13:48:53.86ID:/C9FtGOs
>>66
例えば街の中なら、印象的な建物や遠くに見える大きな山、
ダンジョンなど屋内でも、中央に広めの空間を置くとか、
そういう手法があるのだ
0070名前は開発中のものです。2016/01/17(日) 14:42:18.47ID:OULLJDow
>>68 >>69
なるほど
0071名前は開発中のものです。2016/01/17(日) 15:07:22.95ID:XD9ZIbZ3
>>59
1回増やしたら出さないってプログラムがこの部分になるんだったらダメだな
配列はcountで個数とれる。Fires.count で破壊されてない個数はとれる。
つまり、Fires.count >= 1 の条件だけで完結する話だ

Destroyの節も、この部分だけだとここに書く意味がわからない
秒数で消えるとか、非破壊エリア作ってそこから出たときに破壊判定するとか、
破壊判定は別にもっておくのが普通なんじゃないかな

ソース書けるなら片っ端からチュートリアルやってUnity自体になれたほうがいいぞ
非ゲーム系プログラマほど得るものが多いと思う
0072名前は開発中のものです。2016/01/17(日) 15:34:15.44ID:ivdxLFD3
>>61
order in layer = 描画の登録順番
マウス系イベント レイキャストが当たる順番(手前から)
だったはず
0073名前は開発中のものです。2016/01/17(日) 15:52:47.86ID:+kzMhI7R
>>66
操作キャラの周りに杭が浮いてるの?画面に張り付いてるの?
杭を越えた移動や「没入感が薄れる」を考えるとランドマークではないよね
0074名前は開発中のものです。2016/01/17(日) 16:15:17.96ID:OULLJDow
操作キャラの周りに張り付いてます。
0075名前は開発中のものです。2016/01/17(日) 16:38:14.46ID:+xz5jQa5
iTweenを使ってGUIのテキストを透明にしたく、
iTween.FadeTo(this.gameObject, iTween.Hash(
0076名前は開発中のものです。2016/01/17(日) 16:39:51.58ID:+kzMhI7R
>>74
なるほど。任天堂発想で落とし込むと、北が定位置なキャラ脇の妖精かな
方向音痴でなくても同じ模様の壁に囲まれたダンジョンとかで便利そうだね
0077名前は開発中のものです。2016/01/17(日) 16:43:35.84ID:+xz5jQa5
iTweenを使ってguiのテキストを透明にしたく、iTween.FadeTo(this.gameObject,iTweenHash("alpha",0,"time",3f))
というスクリプトを書いたのですが透明になりません。
調べたところシェーダーがtransparentになっていないと透明にならないと書いてあったのですが、初心者なものでよくわかりませんでした。
どこをどう弄ればいいのか、どなたか教えてください。
すいません途中で切れてしまいました。
0078名前は開発中のものです。2016/01/17(日) 16:58:41.50ID:+43sny4h
ttps://github.com/unity3d-jp-tutorials/2d-shooting-game/wiki/%E7%AC%AC06%E5%9B%9E-%E8%83%8C%E6%99%AF%E3%82%92%E4%BD%9C%E3%82%8B
0079名前は開発中のものです。2016/01/17(日) 17:00:41.45ID:a9erWYiN
初心者と言えば許されると思ってるのか
その程度の事さえ自分で調べられないなら何やっても無駄だから止めてしまえ
0080名前は開発中のものです。2016/01/17(日) 17:05:01.44ID:+43sny4h
>>78

すみません、途中で送信してしまいました。
上記のHPのチュートリアルをやってるんですが、5までは順調に推移していたんですが
6のテクスチャのスクロールのところで全く同じようにやっていたんですが、テクスチャがスクロールしません。
どうしても無理だったので、そこまでの完成したファイルを開こうとしましたが
「Your project was opened with older version of Unity」と出て、プロジェクトを最新版にアップデートしようとする
警告文が出てきました。
この内容の中に、何かアップデートで使えなくなったファイルがあるんでしょうか……?
0081名前は開発中のものです。2016/01/17(日) 17:28:17.82ID:a9erWYiN
Your project was opened with older version of Unit はバージョンが違えば出てくるから気にしなくてそのまま進めばいい
詳細を見たわけじゃないけどチュートリアルレベルで5.2から5.3で変わるようなスクリプトは無いと思うけど
正しくコンパイルされててコンソールにエラーも出てないのに動かないなら
完成ファイルの中身と自分で作ったのを一つづつ比較してみたら
時間が掛って大変だろうけど他人に答えを教えて貰うよりは身につく
0082名前は開発中のものです。2016/01/17(日) 18:49:53.47ID:pAhTthsg
初心者ですがゲームUnityの使い方を教えてください。
0083名前は開発中のものです。2016/01/17(日) 19:01:54.07ID:rFoPwY3o
無理です諦めてください。
0084名前は開発中のものです。2016/01/17(日) 19:08:21.85ID:DAlQvnAS
>>72
z軸を昇順降順それぞれ入れ替えて試してみたのですが、
やはり片方のオブジェクトしか反応してくれませんでした…。

ドラッグではなく単にクリック(mouseDown)を取る場合は
下記のようにレイヤー名で指定するため
SortingLayerではなく普通のLayerも入れ替えたりしてみたのですが、
やはり状況は変わりませんでした。
───
Physics2D.Raycast(
AppUtil.GetTouchWorldPosition(Camera.main),
Vector2.zero,
1,
LayerMask.GetMask(LayerMask.LayerToName(gameObject.layer))
);
───

現状の知識で思いつく方法としては、
ドラッグ時にオブジェクトA、オブジェクトBそれぞれ分けたレイヤーでRaycast判定を行い、
AB両方ある場合はBを無視してAのみ動かすようにするというロジックになるのですが
皆さんこのようなことをしているのでしょうか。
または、ドラッグしたオブジェクトが重なる場合があるという設計自体避けているのでしょうか。
0085名前は開発中のものです。2016/01/17(日) 19:51:26.76ID:+43sny4h
>>81
回答ありがとうございます!
1時間くらいかけて解法を探してたんですけど、stringの中に書く分のアンダーバーが抜けてただけでした……
0086名前は開発中のものです。2016/01/17(日) 20:52:49.36ID:ivdxLFD3
>>84
raycastを使うなら
http://docs.unity3d.com/ja/current/ScriptReference/Physics2D.RaycastAll.html
RaycastAllで全部拾って条件に合致したものを使えばよろしいかも
0087名前は開発中のものです。2016/01/17(日) 21:10:02.28ID:DAlQvnAS
>>86
すみませんありがとうございます!
そういう関数があるってことは、ソートとか多分関係ないっぽいですね…
ありがとうございました。それで判定するように実装することにします。
0088名前は開発中のものです。2016/01/17(日) 21:38:42.76ID:ivdxLFD3
ちょっと色々忘れてるのでちゃんと調べた方がいいかも

Phisics2DはXY平面上のレイを飛ばすものだった気がするので
始点からゼロベクトル方向に飛ばす、とかできたか覚えてない
そもそもRaycastは始点から指定方向にたいしての指定距離内の一番近くを返すものだから
使い方がおかしい気がする

ちょっとみた感じ Phisics2D.OverlapPoint() が目的の動作かも
0089名前は開発中のものです。2016/01/17(日) 21:47:17.72ID:DAlQvnAS
>>88
ありがとうございます。今私も色々ググってます。
そもそもはOnMauseDragにいづれかのlayerのプライオリティが効いてないって言うことが疑問でしたので…
ここまで用意されてるのにプライオリティ判定がないはずがない!と言いますか。

どうも小細工は必須っぽいので、ちゃんと考えることにします。
0090名前は開発中のものです。2016/01/17(日) 22:03:33.77ID:/C9FtGOs
>>76
非没入型インタフェースを、没入型である「妖精」に落とし込める、
その発想力がほしい
0091名前は開発中のものです。2016/01/17(日) 22:28:05.23ID:jXqnY7Lp
ボタンを押した時のイベントで、Input.GetButtonDownでbool判定を行うのは分かるのですが、ボタンを押したときに呼び出されるメソッドありますか?
0092名前は開発中のものです。2016/01/17(日) 22:28:58.85ID:jMHdVRNn
public class SnapScrollRect : ScrollRect
と宣言しているC#のスクリプトをAddComponentしようとすると

Can't add'SnapScrollRect' to SnapScroll
because a 'ScrollRect'is already added to the game object!

と怒られてしまいます。
「: ScrollRect」の部分を「MonoBehaviour」にすると追加できるので一時的にスクリプトを変更する、ということをしているのですが、随分遠回りしている気がします。
一発で追加できる方法ってどうすればよいでしょうか。
0093名前は開発中のものです。2016/01/17(日) 23:38:19.92ID:D8rmv3fX
raycastで2dは距離が0だからダメだよ。他の方法考えてみてね。
0094名前は開発中のものです。2016/01/18(月) 00:24:53.61ID:+E6s9jCC
UnityでMOとかFPSとかのルームを作ってゲームをプレイする感じにしたいんだけど、
UnetってどちらかというとMinecraftみたいなP2P形式っぽい感じの説明しか見当たらないんですが、
クライアントとサーバーを分けて、サーバーにルーム作ったり、座標計算させたりってことは
できないものでしょうか?
0095名前は開発中のものです。2016/01/18(月) 00:33:25.32ID:apbtC/3M
>>92
他につけてるScrollRectを外せばいいんじゃないのか

>>94
できるよ
MMOのサンプルプロジェクトとかUnityで配ってなかったっけ?
0096名前は開発中のものです。2016/01/18(月) 09:35:20.76ID:OTEbnEnH
Unity5かUnity4+photon使えばできるよ。Unity4はNATパンチスルーがあるしP2Pで4人までしか対応してない。
0097名前は開発中のものです。2016/01/18(月) 09:38:06.73ID:OTEbnEnH
RPCビシバシ飛ばしたいんなら、Unity4だとめんどくさいよ。
0098名前は開発中のものです。2016/01/18(月) 09:51:18.26ID:4zoyRg4X
つか>>94のレス見る限りド素人に毛が生えたレベルの奴がよくわからんけど作りたいなあってレベルじゃね
もっと具体的に質問してもらわんとなんとも
0099名前は開発中のものです。2016/01/18(月) 10:23:42.81ID:0t5SJ9VL
unityにてjavascriptで作業しています。
javascriptとC#間でのやり取りにつきまして、
質問させてください。
例えばjavascript同士でしたら、
他のオブジェクトにセットさせているスクリプトに
アクセスするさいは、下記のように書いているのですが、
C#にアクセスするさいはどのように書けばよいでしょうか。
宜しくお願いいたします。

var goalObj:GameObject;
var goalScript:GoalScript;

function Start () {

if(!goalObj){
goalObj=GameObject.FindGameObjectWithTag("Goal00");
}
goalScript=goalObj.GetComponent(GoalScript);

}
0100名前は開発中のものです。2016/01/18(月) 10:58:45.77ID:jtAtnSB8
>>99
やり方は同様、注意すべきはスクリプトを置く場所だけ
The script you want to have access must be inside the Standard Assets or the Plugins folder.
http://www.41post.com/1935/programming/unity3d-js-cs-or-cs-js-access

けど止めとけ、どっちかに統一しろ、混在とかそのうち混乱するだけ
処理速度向上のためにネイティブプラグイン(C/C++)を使うのとは違う
0101名前は開発中のものです。2016/01/18(月) 11:27:26.95ID:+E6s9jCC
>>98
仰るとおり、オフラインゲームはいくつか作ってみたことがあるのですが、
オンラインの知識がなく、unity5で初めて触ったので仕組みがよくわかってない
部分が大きいです。

やろうとしていることを簡略化して具体的に出しますと、
A,B,C,D,E,Fというプレイヤーが居たとして、Aがルーム1を作成。
B,Cがルーム1に入る。ゲーム開始(シーン移動)
シーン内でA,B,Cがスポーンし、移動や攻撃(いわゆるPVPをする)
Dがルーム2を作成。E,Fが入り、ゲームスタート(シーン移動)
シーン内でD,E,Fがスポーンし、PVPを行う。
サーバーではルーム管理、ルーム1とルーム2の座標、生成の受け渡しを別々に
処理する。

サンプルやチュートリアルはすべてのクライアントが同期しているものしか
見つけられなかったのでサーバーが特定のクライアントとのみ、接続して
やり取りする方法が分からないといった状況です。
0102名前は開発中のものです。2016/01/18(月) 11:35:43.47ID:jtAtnSB8
横からだけど↓にある教材で一番下が日本語訳的な物で細かくて初心者にも判りやすい
http://tips.hecomi.com/entry/2015/08/14/220030

【Unity9】UNETでマルチプレイヤーなオンラインゲーム開発【UNET1】 - Unity5(C#)初心者・入門者向けチュートリアル ひよこのたまご
チュートリアル動画の内容を図解付きで丁寧に記事にまとめてくださっています、多分今のところ日本語で一番詳しい。
手を動かしながら覚えたい人は、まずこちらを実践すると感触が掴めると思います。
http://hiyotama.hatenablog.com/entry/2015/07/06/153000
0103名前は開発中のものです。2016/01/18(月) 14:13:40.43ID:fV7TMRFc
unity5 C#で画像読み込みをやりたいのですがうまくいきません

"Assets/Resources/bg"下に"hoge"画像を配置
sp = Resources.Load<Sprite> ("Sprites/bg/hoge");
とやってもspがnullとしか返ってきません
画像をResourcesやSprites直下に置いてもダメでしてお助けください
0104名前は開発中のものです。2016/01/18(月) 14:26:29.35ID:s4UlSgzH
エスパーさんを召還しなければ
0105名前は開発中のものです。2016/01/18(月) 14:30:44.78ID:fV7TMRFc
あれ
すいません Resouces/Sprites/bg
とやったらできました…
お騒がせしました
0106名前は開発中のものです。2016/01/18(月) 14:42:33.18ID:PRY8YhQ6
あれじゃねえよ Resources/bg"下に"hoge で "Sprites/bg/hog とか Spritesはどっから出てきたんだよw
レスってる最中で気がつかないとかどんだけおっちょこちょいなんだ
0107名前は開発中のものです。2016/01/18(月) 14:43:01.81ID:5AH5lJEU
>>105
言葉が足りなくて意味不明だがAssets/Resources/bg下にあった"hoge"画像をAssets/Resources/Sprites/bg下に移したら読めたならそれで正しい
Resources.Loadに渡すパスはAssets フォルダー内にある Resources フォルダーから相対的なパスとなる。パスが違えば違うものが取れるかなければnullが返る。

本当に"Assets/Resources/bg"下に"hoge"画像が配置されてるなら以下で取れるはず
sp = Resources.Load<Sprite> ("bg/hoge");
0108名前は開発中のものです。2016/01/18(月) 15:02:24.22ID:vApH2xUB
質問失礼します。
AndroidとiPhone両方に対応したゲームを作成しています。
AndroidはETC1 iPhoneはPVRTC に対応すれば、ファイルサイズが小さく高品質なテクスチャーが生成できる所までは理解しました。
他のツール(例えばOPTPiX)でテクスチャーをETC1もしくはPVRTCへ変換した後、何というファイルで出力したらUnityが正常に読み込めるのでしょうか?
PVRTCは*.pvr、ETC1は*.pkmみたいな記述があったので、それにしましたが、pvrは上下が反転しαが消えたようになっており、pkmはそもそもバイナリファイルと判断されているようです。
PVRTCとETC1はどのようなツールで出力したら良いでしょうか?
また拡張子は何で出力するのが一般的でしょうか?
分かる方、よろしくお願いします。
0109名前は開発中のものです。2016/01/18(月) 15:17:46.05ID:s4UlSgzH
OPTPiXのとならウェブテクノロジに聞くべきじゃないですかね?
0110名前は開発中のものです。2016/01/18(月) 21:51:21.27ID:/pw77E+L
完成せないよー。
個人開発者はどんだけ時間費やしてるんだろう
0111名前は開発中のものです。2016/01/18(月) 22:04:49.49ID:apbtC/3M
キミのは仕様盛りすぎなんだよ
内容的にその半分、完成度的にその4分の1が
個人開発に適切な規模ってもんだ
0112名前は開発中のものです。2016/01/18(月) 22:31:29.79ID:OTEbnEnH
一発アイディアなら3日、会社の後に6時間くらいで。
土日なら金曜から徹夜して小規模の物なら。
FPSとかはやっぱり2−3か月かかるかな。
0113名前は開発中のものです。2016/01/18(月) 22:33:26.88ID:1b9ZJrDu
ゲームってなんだろうって理想にもよるよね
最初に作ったRPGもどきは半年かかった
ミニゲーム的なのにはそもそも魅力を感じない
■ このスレッドは過去ログ倉庫に格納されています