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

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

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2013/06/25(火) 03:51:44.47ID:vfI8rCSw
3Dゲームエンジン「Unity」の質問に優しく答えるスレです。

Windows/Mac用。JavaScript/C#/Booといった汎用言語を使用できるのが特徴です。
フリー版で開発したゲームは個人・法人を問わず追加のロイヤリティーなしで販売できます。
プラットフォームサポートはiPhone/iPod Touch/iPad、Mac、PC、Web、Wii、Xbox360、Android、PlayStation 3他

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

■前スレ
【3Dゲームエンジン】Unity質問スレッド4
http://toro.2ch.net/test/read.cgi/gamedev/1362821620/

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

■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←スクリプトのエラー番号をこれで検索すると原因が日本語で出てきます。
0011名前は開発中のものです。2013/06/25(火) 11:48:03.35ID:hoS9//qh
>>10
2Dアプリやツールは、Unityに向いてないんじゃないか。
3D向けの開発ツールだし。

できないことはないだろうけど、大掛かりな舞台装置の上でわざわざ紙芝居やる感じだな。
無料版だと起動のたびにUnityのロゴが表示されるし、スマホ向けだと電池消費量も多いし
カレンダーみたいな頻繁に起動するものには厳しいと思う。
0012名前は開発中のものです。2013/06/25(火) 12:01:30.78ID:Ihj+k8Uh
なるほど、アフィを貼って、そのアフィで買った初心者と見せかけ適当な質問をして
そのアフィリンクはみんな買ってる安心なところですよと宣伝をするわけですね。

勉強になります。
0013名前は開発中のものです。2013/06/25(火) 12:03:27.87ID:77qwp3qD
嫌儲民「アフィイイイイイ!ステマアアア!」

でもスレ一覧は広告スレだらけ。
あいつらアホだよ。
0014名前は開発中のものです。2013/06/25(火) 13:10:51.50ID:3KMWLqgT
>>11
やっぱり用途そのものが違いますかー。
ありがとうございます。
0015名前は開発中のものです。2013/06/25(火) 14:33:31.76ID:Ej+baJIh
元2ちゃんねる副管理人の「切込隊長」 山本一郎氏、大前ひろき氏らがUnityによるゲーム開発の功罪を語った「黒川塾(九)」レポート
http://www.gamer.ne.jp/news/201305260002/
元2ちゃんねる副管理人の「切込隊長」 山本一郎氏、大前ひろき氏らがUnityによるゲーム開発の功罪を語った「黒川塾(九)」レポート
http://www.gamer.ne.jp/news/201305260002/
元2ちゃんねる副管理人の「切込隊長」 山本一郎氏、大前ひろき氏らがUnityによるゲーム開発の功罪を語った「黒川塾(九)」レポート
http://www.gamer.ne.jp/news/201305260002/
元2ちゃんねる副管理人の「切込隊長」 山本一郎氏、大前ひろき氏らがUnityによるゲーム開発の功罪を語った「黒川塾(九)」レポート
http://www.gamer.ne.jp/news/201305260002/
元2ちゃんねる副管理人の「切込隊長」 山本一郎氏、大前ひろき氏らがUnityによるゲーム開発の功罪を語った「黒川塾(九)」レポート
http://www.gamer.ne.jp/news/201305260002/
元2ちゃんねる副管理人の「切込隊長」 山本一郎氏、大前ひろき氏らがUnityによるゲーム開発の功罪を語った「黒川塾(九)」レポート
http://www.gamer.ne.jp/news/201305260002/
0016名前は開発中のものです。2013/06/25(火) 14:36:39.08ID:Ej+baJIh
4gamerのUnity記事見て喜んでるのはカモなんでしょうか?
Unityの支配者はオオマエヒロキ、山本一郎、宮川って本当ですか?
残りはカモってことですか?
4gamerのUnity記事見て喜んでるのはカモなんでしょうか?
Unityの支配者はオオマエヒロキ、山本一郎、宮川って本当ですか?
残りはカモってことですか?
4gamerのUnity記事見て喜んでるのはカモなんでしょうか?
Unityの支配者はオオマエヒロキ、山本一郎、宮川って本当ですか?
残りはカモってことですか?
4gamerのUnity記事見て喜んでるのはカモなんでしょうか?
Unityの支配者はオオマエヒロキ、山本一郎、宮川って本当ですか?
残りはカモってことですか?
4gamerのUnity記事見て喜んでるのはカモなんでしょうか?
Unityの支配者はオオマエヒロキ、山本一郎、宮川って本当ですか?
残りはカモってことですか?
4gamerのUnity記事見て喜んでるのはカモなんでしょうか?
Unityの支配者はオオマエヒロキ、山本一郎、宮川って本当ですか?
残りはカモってことですか?
4gamerのUnity記事見て喜んでるのはカモなんでしょうか?
Unityの支配者はオオマエヒロキ、山本一郎、宮川って本当ですか?
残りはカモってことですか?
0017名前は開発中のものです。2013/06/25(火) 19:32:55.51ID:Jn0Ct6ah
NGWord指定が捗るな
0018名前は開発中のものです。2013/06/25(火) 19:59:23.40ID:oaGh6v56
・ゲーム系スレで「俺が作ればもっと面白いのが出来る」と豪語 
↓ 
・「じゃあUnityで作ってみれば?」と薦められる 
↓ 
・使い方が理解できない 
↓ 
・「俺が悪いんじゃなくてUnityが悪いんだ」とファビョる 

これもテンプレ入れとけ。
0019名前は開発中のものです。2013/06/26(水) 02:27:26.83ID:JBeeloIZ
unityfreeなんですけどオススメのシェーダーとかアセット教えてください。
0020前スレ9752013/06/26(水) 04:12:41.89ID:33cxwwDX
前スレ>>993
transform.parent=nullを記述したOnTriggerExit関数が呼び出されないんです。

PlayerオブジェクトとFloorオブジェクトがあります。
PlayerオブジェクトとFloorオブジェクトが衝突するとFloorのスクリプトの
OnTriggerStay関数が呼び出され、PlayerObject.transform.parent = transformでPlayerがFloorの子になるようにしました。
Stay関数は接触している間ずっと呼び続けられると思うのですが、PlayerがFloorの子になってから呼び出されません。
またPlayerがFloorから離れた際にOnTriggerExitにてPlayerObject.transform.parent = null;と記述しているのですが
これも呼び出されず、困っています。
親オブジェクトと子オブジェクトは衝突判定はできないのでしょうか?
0021202013/06/26(水) 04:14:04.43ID:33cxwwDX
↑上げてしまってすみません。
0022202013/06/26(水) 04:16:55.77ID:33cxwwDX
何度もすみません;w;
0023名前は開発中のものです。2013/06/26(水) 07:41:29.01ID:IL03qIgV
>>20
相当意味不明。何かどうでもいいミスをしている可能性が高い。
・床との衝突判定はOnTriggerでやるべきでない。接触はOnCollision系
 →OnTriggerじゃないといけない理由は?
・OnTriggerを使用してるならisTrigger=trueなはず。その場合床とPlayerはすり抜ける。
 →Floorと接触して〜は不可能じゃないか?
  FloorとisTrigger用GameObjectを分けてる? なんのために?

・OnTriggerStayは親子関係になっても呼ばれる。1度しかよばれないわけが無い。
 →ほんとに一度? コンソールのcollapseをOnにしてるだけじゃない?
・OnTriggerEnterは1度しか呼ばれない。こっちを使ってないか?
 →親子関係の変更は1度でいいよね? 本当はこっちのはず。
・OnCollisionEnterでも1度しか呼ばれない。こっちでもおかしくない。
 →本来はこれを使うべき。
・OnTriggerExit,OnCollisionExitは親子関係でも普通に呼ばれる。
 →これが呼ばれない=まだStayしている、もしくはそもそも接触できていない。
  isTrigger用のGameObjectがあるなら、その範囲がおかしいんじゃないか?

なんか結構全般的におかしい。いろいろ書いたけど他に原因がある可能性は高そう
0024名前は開発中のものです。2013/06/26(水) 14:21:20.01ID:fUzhdVNu
Camera.mainに入ってくるカメラの条件って何?名前?
0025名前は開発中のものです。2013/06/26(水) 15:04:35.24ID:IL03qIgV
>>24
ほいおー
http://docs.unity3d.com/Documentation/ScriptReference/Camera-main.html
MainCamera タグ持ってる中からひとつ。
複数あった場合はどれが持ってこられるかは保障されない。
0026名前は開発中のものです。2013/06/26(水) 17:20:04.67ID:fUzhdVNu
サンクス
タグとは落とし穴だったなw
0027名前は開発中のものです。2013/06/26(水) 17:54:39.61ID:6qvW7ENx
スポットライト使うとDrawCallが一気に増えるのってどうしようもないの?
光があたるオブジェクトが多いほど、一気に増える。
これじゃ、スマホ向けにはディレクションライトしか使えない・・・。
0028名前は開発中のものです。2013/06/26(水) 18:06:07.93ID:fiRuzY7R
>>27
スポットライトをライトマップオンリーにすれば良いのでは
0029名前は開発中のものです。2013/06/26(水) 18:09:17.11ID:/zNB3Fas
>>27
LightProbe(Proのみ)で解決
0030名前は開発中のものです。2013/06/26(水) 18:16:39.20ID:6qvW7ENx
>>28
動くオブジェクトに当てたいから無理・・・だよな?
0031名前は開発中のものです。2013/06/26(水) 18:39:34.25ID:4bEvBWkQ
pro版機能は一個づつ小売にすればいいのに
0032名前は開発中のものです。2013/06/26(水) 18:56:04.42ID:h2+UR5Wi
>>31

上手い事言ったと思ったが、
アップデートの時とかベンダー側がメンドクサイよな
0033名前は開発中のものです。2013/06/26(水) 19:10:01.67ID:4bEvBWkQ
だってアセットは小売してるじゃん
0034名前は開発中のものです。2013/06/26(水) 19:21:16.66ID:JBeeloIZ
ホントだな。
その方が売り上げ伸びそうだ。
0035名前は開発中のものです。2013/06/26(水) 19:29:14.51ID:4bEvBWkQ
まぁ、金になるところだけ熱心に開発して土台が疎かになる恐れはあるけど
てか今でも十分疎かかw
0036名前は開発中のものです。2013/06/26(水) 19:34:42.50ID:JBeeloIZ
他のソフトでは機能限定でいくつもバージョンあるからな。
unityもそろそろそういう売り方してもいいとは思うが。
経営陣は先にクラウド導入したいだろうな。
0037名前は開発中のものです。2013/06/26(水) 20:48:31.24ID:/49XhXp1
>>30
GLES2.0専用ならシェーダである程度のスポットライトは処理できるかもしらん。
ライトが動くのは基本的に鬼門なのはチープなグラフィック時代から変わらないので我慢するしか。
0038名前は開発中のものです。2013/06/26(水) 21:47:53.84ID:sJ+3xnE1
>>36
サーバ側にデータ転送して作業ってのは嫌だなぁ
0039名前は開発中のものです。2013/06/27(木) 06:54:37.53ID:ZoD+7PGn
ios向けのアクションものでオンライン対戦を実装したいんですが、ラグ回避の為に近くのPing値が高い相手とのみ自動マッチング としたい場合どの関数を使えば良いのでしょうか?

またはオススメのアセットがあれば教えて下さい
0040名前は開発中のものです。2013/06/27(木) 09:05:57.29ID:iOYsZs0F
>>39
ん?どの関数使えばいいかって、それってそういう話なのか
0041名前は開発中のものです。2013/06/27(木) 09:11:36.04ID:iOYsZs0F
途中で送信してしまった。
pingだったら、普通に考えると C# ICMP でググったらとか思うが、
俺だったらマッチング用のサーバ側に接続者の平均レスポンス時間とか記録しておいて、
それをクライアントで受けて判断、みたいな処理にするかも。
0042名前は開発中のものです。2013/06/27(木) 10:01:18.12ID:W96c38vY
ゲームのロジックより全然簡単だからないんじゃない?
0043名前は開発中のものです。2013/06/27(木) 15:26:45.81ID:ZoD+7PGn
>>41
ありがとうございます。

C# ICMPでググってみます
0044名前は開発中のものです。2013/06/27(木) 18:14:45.10ID:i+Ry599W
すみません、collider同士はぶつからないのでしょうか?
調べてみたんですがcovenxみたいなのチェックしても全くぶつかりません、すり抜けます。
何か方法はありますか?
0045名前は開発中のものです。2013/06/27(木) 20:03:31.87ID:LTyGmnFP
rigidbody付いてる?
0046名前は開発中のものです。2013/06/28(金) 06:16:26.70ID:0666G2kx
>>44
http://code.google.com/p/vga-unity/wiki/GP10UnityCourse08
この表によるとcollider同士の当たり判定は発生しないみたいだな
0047名前は開発中のものです。2013/06/28(金) 07:54:28.27ID:KZfHi7Ou
エディタのゲーム画面だけなんだか縦長になってしまったんですがどんな原因が考えられるでしょうか?
0048名前は開発中のものです。2013/06/28(金) 13:30:08.50ID:5TFSWNRY
>>47
Gameタブの直下あたりにアスペクトレシオ変更のトグルがあるけど、そこクリックして縦長のになってない?
デフォルトだとFree Aspectになってるはずスマフォ向けのBuild設定とかだと各スマフォの代表的な比率で縦長になってると思う
0049名前は開発中のものです。2013/06/28(金) 13:38:18.27ID:sJLUTiYr
WWWを使えば、Windows上の保存場所を指定して画像を読み込ませることはできたんですが
音楽や動画をWindows上から読み込ませる方法はあるのでしょうか?
0050名前は開発中のものです。2013/06/28(金) 19:48:28.20ID:S3mjXImB
iTweenとiTweenPathのアセットでキャラクターをMoveさせてるんですが、UnityEditor上のPlayだと正常に動くんですが、あるキャラクターだけiOS実機で動かすとiTween通りの動きになりません。

原因わかる方いらっしゃいますか?
0051名前は開発中のものです。2013/06/28(金) 23:54:35.68ID:5TFSWNRY
>>49
目的が見えないんでなんともいえないんだが、AssetBundleつかうのでは駄目なのか?
これはAudioClipからなにから好きな物を任意のサーバ、ファイルシステムから読み込める。
ただエンドユーザに任意のデータを読み込ませるのには使えない。
0052名前は開発中のものです。2013/06/29(土) 03:38:57.77ID:A722NIxA
走りながら攻撃するアニメーションを作りたいんですが
走るアニメーションの下半身と攻撃するアニメーションの上半身混ぜるってできないですか?unityで
0053名前は開発中のものです。2013/06/29(土) 04:41:52.73ID:rp4k0FdD
できるよ
0054名前は開発中のものです。2013/06/29(土) 09:35:36.21ID:5Ubx5ixL
上半身のモデルと下半身のモデルを分けてインポートして
上半身は攻撃のアニメーション、下半身は走るアニメーションをそれぞれ実行
でいいんじゃね?
0055名前は開発中のものです。2013/06/29(土) 10:03:14.67ID:ecZ3EAFj
>>54
戦車とかロボとか、人間でも境目が隠れてるか良く分からない距離ならそれでもいいよな
そこそこアップにもなる全身タイツの人間や動物だと見た目エラい事になるが
0056名前は開発中のものです。2013/06/29(土) 11:41:00.23ID:ckDBwhPN
>>52
Mecanimのチュートリアルビデオにそんなのがあったぞ
公式からたどれるチュートリアルみてみ
0057名前は開発中のものです。2013/06/30(日) 18:00:30.84ID:3EObUEe2
ontrigger()だけは絶対に許さん
0058名前は開発中のものです。2013/07/01(月) NY:AN:NY.ANID:ntmGwho6
アニメーションのblendってあったよね。たしか。
0059名前は開発中のものです。2013/07/02(火) NY:AN:NY.ANID:IN/I03Ij
初心者です。質問です。
Unity 4をダウンロードし、
ネット上に、PDFの翻訳があった、
3D Platformer Tutorialをやっています。
(このチュートリアルは、Unity 2用みたいですが、
他に理解できそうなチュートリアルが無かったので、このチュートリアルで勉強しようと思いました。)


プロジェクトをダウンロードし、
キャラクタLerpzをシーンビューに置いて、Playボタンを押したのですが、
PDFにあるような、背景がありません。(Lerpzだけがシーン上にあります。)

何がおかしいのでしょうか? よろしくお願いします。
0060名前は開発中のものです。2013/07/02(火) NY:AN:NY.ANID:IN/I03Ij
59です。
補足として、PDFは、
ttp://ws.cis.sojo-u.ac.jp/~izumi/Unity_Documentation_jp/Documentation/3DPlatformTutorial_jp.pdf です。
このPDFの12ページの時点で止まってます。
13ページにあるような、背景が表示できません。

ググってもよくわからなかったので、質問しました。
0061名前は開発中のものです。2013/07/02(火) NY:AN:NY.ANID:QrQrvwDM
>>59
とりあえずやってみて普通にあるので原因は2種類。
ちゃんとシーン開いた?
そうじゃなかったらちゃんとカメラを動かしてあたりを見回した?
チュートリアルもいいけど、
http://japan.unity3d.com/developer/document/tutorial/basic/
を見とくのもたぶん大事。取り扱い説明書的なもんだから。
特にシーンビューのナビゲーションってところを見ながら、
シーンビューをどうやって扱うかを理解することも大事。
背景は(-120,0,0)を中心としてる。チュートリアルの一環だと思って頑張れ。

でも、正直Unityの黄色本あたりで勉強したほうが万倍ためになると思います。
0062名前は開発中のものです。2013/07/02(火) NY:AN:NY.ANID:KEvuwOG8
>>59
英会話、英文は駄目を前提にしても公式のビデオチュートリアルはまねっこするだけで理解が深まるからマシン二台(ウィンドウひらいてやると狭いから)使ってポーズボタンと併用でやってみそ
0063名前は開発中のものです。2013/07/02(火) NY:AN:NY.ANID:IN/I03Ij
>>61 >>62
ありがとうございます。
もう、一度やり直してできました。

すみません、単純ミスでした。
マニュアルの「Scene->TheGame Sceneを見て下さい」という記述を、
”クリックする”という意味で捉えていませんでした。
(Projectパネルのテクスチャのフォルダを確認?してました。)

ほんとうに、ショボいミスですみません。
61さんに教えていただいたリンクなど、一からやり直してきます。

ありがとうございました。
0064名前は開発中のものです。2013/07/03(水) NY:AN:NY.ANID:izHT7B7B
>>63

PC系のマニュアルで良くある事。
マニュアルと良いながら、結局分かってる奴を対象にしていたりするからね
0065名前は開発中のものです。2013/07/05(金) NY:AN:NY.ANID:bC4LrvGo
すごく初歩的なことなんですが
例えばTestAというスクリプトの○○という関数を
TestBというスクリプトで呼び出すにはどう書けばいいのでしょうか?
言語はC#です。どちらのスクリプトもAssetsの中に入ってます
0066名前は開発中のものです。2013/07/05(金) NY:AN:NY.ANID:D7cBYMwn
初歩的なら簡単だろ
0067名前は開発中のものです。2013/07/05(金) NY:AN:NY.ANID:XTJkNQPQ
>>65
いろいろありすぎてめんどくさいぐらい方法があって、
そのせいでわかりづらい。実はそんな簡単じゃない。

GameObject gameObjectA に TestA というスクリプトくっつけてるとするね。
TestBがgameObjectAにアタッチされてない場合、だいたい以下の3つ

1.GetComponent
例)TestA testA = gameObjectA.GetComponent<TestA>();
testA.○○();
2.SendMessage
例)gameObjectA.SendMessage("○○");
3.staticにしちゃう
例)public class TestA:MonoBehaivior{
public static void ○○;
}
// in textB
TestA.○○

何度も使うならGetComponent,1度でいいならSendMessage,
よくよく理解してて、特性やバグのパターンを把握してるならstatic.素人にはおすすめできない。

どうやってgameObjectAを取得するのか、というと
Find()とかOnCollisionEnter()の引数とか、いろいろある。

まぁ、基本はFindしてGetComponentして使ってればいいんじゃないですかね。
0068名前は開発中のものです。2013/07/05(金) NY:AN:NY.ANID:/6TVIRVM!
>>67
質問的にstatic関数では?

普通にTestBから
TestA.○○
でおk。
0069名前は開発中のものです。2013/07/05(金) NY:AN:NY.ANID:Y41MaDA7
インスタンスメンバに用があるのかstaticでいいのかって、
大分意味合い変わってくると思うが。
つまり、やりたい事次第だと
0070名前は開発中のものです。2013/07/05(金) NY:AN:NY.ANID:oToDaWPn
static については、gamesonytablet氏が翻訳してる記事を読んでおけば間違いないと思う
http://gamesonytablet.blogspot.jp/2013/01/unitystatic_8.html
0071名前は開発中のものです。2013/07/05(金) NY:AN:NY.ANID:Y41MaDA7
>>70
なんか特別な話かと思ったらただのC#の
言語レベルの入門記事だった
0072名前は開発中のものです。2013/07/05(金) NY:AN:NY.ANID:oToDaWPn
>>71
まあ、Unity3dで初めてC#(引いてはOOP)に触る人もいるだろうし……と思って
0073名前は開発中のものです。2013/07/06(土) NY:AN:NY.ANID:MvkNwOic!
>>70
機械翻訳読み辛いな・・・
0074名前は開発中のものです。2013/07/06(土) NY:AN:NY.ANID:/ZIbqHbZ
>>70
>Unityメモリ管理の基礎を積み重ねていこうぜ!
ないわー
0075名前は開発中のものです。2013/07/06(土) NY:AN:NY.ANID:GmwLkeYx
まぁまぁ、一応そこのおっさん公式マニュアル翻訳してる人だし、
いろいろと多岐に渡って翻訳してくれてるいい人なんだ。
その、なんていうか独特のノリは()暖かい視線で見守っていこうぜ!
0076名前は開発中のものです。2013/07/06(土) NY:AN:NY.ANID:fuFs1zZX
あぁだから公式日本語マニュアル糞なのか
0077名前は開発中のものです。2013/07/08(月) NY:AN:NY.ANID:VqB3Y7Ez
理解深まってもなんだかんだで二年くらい費やすよなw
俺は諸般の事情で3年くらい掛かったけど・・・
0078名前は開発中のものです。2013/07/08(月) NY:AN:NY.ANID:u+yMDmhn
>77
なににそんなかかるの?
0079名前は開発中のものです。2013/07/08(月) NY:AN:NY.ANID:tfl2dK/2!
>>78
ノベル
0080名前は開発中のものです。2013/07/08(月) NY:AN:NY.ANID:qf1XaXVI
はじめまして。
今Unityでリバーシを作っています。
スクリプト言語はJavaScriptを使っています。
(C#はどちらかとういうと好きではありません・・・)
黒のターンではうまくいくのに白のターンでうまくいかないので質問させてください。
文章を作るのが苦手なために変な文章だったらすいません。

マウス操作でコマを操作し、マウスクリックで盤上にコマを配置してスクリプトでおけるかどうかを判断させています。
置くことができる(何かしらめくれる)ときは、めくる動作がアニメーションに見えるにスクリプトで回転させています。
初期位置からどういう風においても黒は問題なく白をめくって白のターンへ行くのですが、その次白のターンで黒をめくっている途中で動きが止まって黒のターンになってしまっています。
スクリプトで次のターンへ行く前にコンソールに"next turn"と出力させるようにしているのですが、黒のターンが終わる時は出力されても白のターンが途中で止まった時にはそれが出ていません。
"next turn"を出してからターンを次へ送るための関数を呼び出すようにしているので、"next turn"が出ていないのなら白のターンから次のターンへ行っていないと思うのですが・・・

MonoDevelopのDebugでUnityを起動してデバッグをしてみましたが、ViewでDebugを選んでWatchに変数や条件文などを書いてみるとなぜか"Unknown Identifier"と言われてしまい、変数の中身が見られません。
Localのthisの中にあった変数名をWatchに書いてみても同じメッセージが出ます。

現在作成途中のものを以下にアップしてみました。
http://gmdev.xrea.jp/
[945.zip] 白のターンがうまくいかない作りかけリバーシ 0.22MB 2013-07-08 reversi.zip

黒と白はturnの番号が違うだけでめくる部分の基本的なことは同じようにさせているので、白(turn==0)だけなぜうまくいかないのか・・・

こんな長文ですいません。
どなたかよろしくお願いします。
0081名前は開発中のものです。2013/07/08(月) NY:AN:NY.ANID:EL6md65E
はじめまして(^_^)
0082名前は開発中のものです。2013/07/08(月) NY:AN:NY.ANID:Q2gIaxei
Unityを使って簡単なネットワーク対戦ゲームを作成しています。
InstantiateとSceneの遷移部分で上手く同期がとれないため
ご教示願いたいと思い、こちらに書き込ませて頂きました。

現在以下のようなSceneを製作しています。
1.LoginScene(サーバへの接続画面のみのシーン)
2.BattleScene(接続後、実際に戦うシーン)

ホストとなるユーザはLoginSceneでサーバを建て、
直後にApplication.LoadLevelでBattleSceneへ移行。
BattleSceneにてプレイヤーキャラをNetwork.Instantiateする。

クライアント側はLoginSceneでIP,Portを入力しサーバへ接続、
直後にApplication.LoadLevelでBattleSceneへ移行。
BattleSceneにてプレイヤーキャラをNetwork.Instantiateする。

という流れになっています。
ただこのような手法を取るとクライアント側にホスト側のキャラクタが生成されませんでした
1つのSceneに接続と対戦を合わせた場合は問題は起こらないため、
ホスト側のキャラのInstantiateがクライアントに伝わっていないのだと
考えていますが、良い解決策が思い浮かびません。

もしよろしければより良い方法、またはその方法を調べるためのキーワードを
教えて頂けないでしょうか?
0083名前は開発中のものです。2013/07/08(月) NY:AN:NY.ANID:M3ds/1Fi
>>80
JSはデバッグしづらいから今のうちにやめておいたほうが
将来得するよ。
で、処理が途中で止まる場合、カウンタが初期化されてないとか
ループ中にエラーで強制終了されてるとかその辺じゃないの?

Watch出来ない変数はかたっぱしからログに出すか、publicにして
エディタから見ればいいのでは?Monoもバグ多いし
0084名前は開発中のものです。2013/07/08(月) NY:AN:NY.ANID:opNLJ1Tz
>>80
  ○●
  ●○
  ↓
●●● 黒1手目
  ●○
  ↓
●●● 白1手目(△)
△●○ 

この白1手目の局面で、下記、正解図のように
正しい駒を裏返していない理由を調べたほうが良さげ・・

●●● 白1手後、正解図
○○○ 

●●△ ←失敗図
○●○ 
0085名前は開発中のものです。2013/07/08(月) NY:AN:NY.ANID:qf1XaXVI
80です。
そもそもこのリバーシは以前HTML5+JavaScriptで作ったものをUnityに移植させてみようと思ったものです。
SetIntervalで作っていたアニメーション部分をWhileとyieldなどで再現させてみました。

>で、処理が途中で止まる場合、カウンタが初期化されてないとか
ループ中にエラーで強制終了されてるとかその辺じゃないの?
While(true)という無限ループを使っているので、カウンタが初期化されていないという落ちはありません。
ループ中にエラーで強制終了されてるのでは?という話ですが、デバッグで動きを追ってみると思ってもいないところで条件に引っかかってループを抜け出しているみたいでした・・・
そもそもデバッグ前に変数の値などをコンソール出力させていましたが、それでなかなか解決しなかったのでデバッグに頼ろうって思ってました。

C言語やC++などは好きですが、C#は教わったことはあるもののそのときあまり好きになりませんでした。
あまり自分が興味持たないような内容ばかりで・・・
それ以来全く触ってないので、書き方もほとんど覚えていません・・・w
反対にJavaScriptは自分であれこれやってみたくなるくらい面白いと思えました。
0086名前は開発中のものです。2013/07/08(月) NY:AN:NY.ANID:u+yMDmhn
スレに自分のゲームにおいて発生するバグの相談をして問題が解決した事がない。
エスパーで解決するレベルなら自分で解決しているものだ。
0087名前は開発中のものです。2013/07/08(月) NY:AN:NY.ANID:k2F5L4X2
ここは解決するスレじゃなくて質問スレだから
解決しなくてもいいんだよ。質問したら終わりwwwww

てくらいで考えとけ。
もし似たようなとこではまってた人がいたら
ヒントくらいもらえるかもしれない、というダメもとで書け。

もっとまじめに対応してくれというならやってみたくなるような書き方と
全プロジェクトうpしろ
0088名前は開発中のものです。2013/07/08(月) NY:AN:NY.ANID:LKuAdA2S
>>82
Network.Instantiate したプレイヤーキャラが、 LoginSceneに生成されてしまってる。
http://docs-jp.unity3d.com/Documentation/Components/net-NetworkLevelLoad.html
0089名前は開発中のものです。2013/07/08(月) NY:AN:NY.ANID:LKuAdA2S
>>88
補足
ホストへ接続した直後、ホストからクライアントへ「Network.Instantiate()したよ〜^^」という
Messageが到着し、クライアント側のQueueに溜まる。

Network.isMessageQueueRunning がtrueの場合、クライアントは、即座にそれを取り出して実行する。
falseの場合は、取り出さずに保留しておく。破棄されない。

Application.LoadLevel()は別スレッドで走るから、ホストへ接続した直後にApplication.LoadLevel()しても
BattleSceneへ移動する前に「Network.Instantiate()したよ〜^^」というMessageが届いてしまい、
結果、LoginSceneにプレイヤーキャラが生成されてしまうこととなる。
0090名前は開発中のものです。2013/07/08(月) NY:AN:NY.ANID:Q2gIaxei
82です。
>>88
>>89
レスありがとうございます。
また、こちらのレスが遅くなってしまい、申し訳ないです。

>>Application.LoadLevel()は別スレッドで走るから、ホストへ接続した直後にApplication.LoadLevel()しても
>>BattleSceneへ移動する前に「Network.Instantiate()したよ〜^^」というMessageが届いてしまい、
>>結果、LoginSceneにプレイヤーキャラが生成されてしまうこととなる。

Message等あまり詳しくありませんが命令キューのようなものを備えているのですね。
LoginSceneで既に生成メソッドが呼ばれている、ということは気づきませんでした。

Network.isMessageQueueRunningについても
非常に有意義な情報を頂いてありがとうございます。
これらの情報を基に以下のような解決方法を考えてみました。

1.LoginSceneの段階でNetwork.isMessageQueueRunningの値をfalseに。
2.接続後、BattleSceneに移り変わった後にNetwork.isMessageQueueRunning=true。

上記のものを試してみます。
本当にありがとうございました。
009188-892013/07/08(月) NY:AN:NY.ANID:h9ZVXHtq
>>90
それで合ってます。勿体ぶったような書き方になってしまってスマソ

// 以下チラ裏
ホストとSceneを同期する場合は、こんな感じで書けばおk
C#だとyield使いにくいから、こちらの方が良いかも

void OnServerInitialized() {
networkView.RPC("RpcChangeScene", RPCMode.AllBuffered, GameRule.sceneId); //GameRuleクラスは自作
}

[RPC]
void RpcChangeScene(int sceneId) {
if (Application.loadedLevel == sceneId) { return; }
Network.SetLevelPrefix(sceneId);
Network.isMessageQueueRunning = false;
Application.LoadLevel(sceneId);
}

void OnLevelWasLoaded() {
Network.isMessageQueueRunning = true;
}
0092名前は開発中のものです。2013/07/08(月) NY:AN:NY.ANID:Q2gIaxei
>>91
82です。
先ほど私が書き込んだ方法で問題のほうは解決しました。
ありがとうございます。これで肝心のゲーム内容に移れそうです。

>>void OnServerInitialized() { 以下
RPCを用いてサーバー側がScene変更を制御する形なのですね。
そちらのほうが集中管理できそうなのでそちらも試してみます。
自分の場合、以下のような形で実現していました。
public void OnConnectedToServer()
{
Network.isMessageQueueRunning=false;
LoadNextStage();
}
private void LoadNextStage()
{
Application.LoadLevel("WaitNextStage");
}

最初、Network.Connect()直後にQueueを停止したのですが接続が完了しなかったため
上記のようなOnConnectedToServerで停止するアプローチに変更しました。

RPC周り、LevelPrefix等まだまだ見るところがたくさんありそうですね・・。
度々本当にありがとうございました。非常に参考になります。
0093名前は開発中のものです。2013/07/08(月) NY:AN:NY.ANID:W+O2Yqce
はじめまして。
Unityを使って紙芝居のようなアプリを作りたいのですが、objectの当たり判定がうまく設定できず困っています。

やりたいことは、
1.背景画像(Plane)を配置
2.背景画像の手前に人形の画像(Plane、テクスチャは透過PNG)を配置
3.背景画像をクリックすると人形が動く
4.人形の画像をクリックすると音声が流れる
5.人形の画像の透明部分(見た目上は背景画像が表示されている)をクリックした際には背景画像がクリックされたものとみなす

なのですが、5の実装方法がわからずに困っています。
objectにPlaneを使用しているのがそもそも間違いなのでしょうか...

説明下手ですみません。
どうかお知恵を貸してください。
0094名前は開発中のものです。2013/07/08(月) NY:AN:NY.ANID:vfE3F67r
>>93
透過ではない部分なら反応するのか?
0095名前は開発中のものです。2013/07/08(月) NY:AN:NY.ANID:vfE3F67r
---背景画像----
---人形--------
      ダミー---

三層構造で頑張るか・・。
0096名前は開発中のものです。2013/07/08(月) NY:AN:NY.ANID:Dllv7Vpq
80です。
>>84
そうなる原因は、スクリプトの2次元配列に覚えさせていたゲームオブジェクトの位置とゲーム画面の盤面の位置とが違っていたからでした。

どうして白のターンで黒をめくるときにどこまで行っているかと言うと、回転を制御する変数がなぜか途中までしか変化していませんでした。
本来なら白のターンなら1から0まで0.2づつ減らすようにしていて、
Unityの計算の誤差を考えて0以下になったらそのコマの回転を止めて次の動作―めくれるものがあればめくる、そうでなければ次のターンへ行くようにしているのですが、
なぜか途中の0.6までしか変化していません。
そのあと0より大きいにもかかわらず次の動作―今回は1つしかめくれないので次のターンへ行くようになっています。
コンソールに座標となる変数の値を出力させていて、めくるべきコマの座標やどこまでめくるのかに間違いは見られません。

座標を直したものに実行ファイルをつけてアップしなおしました。
[946.zip] 作りかけリバーシ 座標改良版 実行ファイル(exe)付き 7.15MB 2013-07-08 reversi.zip
http://gmdev.xrea.jp/
前回のもそうでしたが、Unityファイル(reversi_PvP.unity)はAssets\Sceneにあります。
0097名前は開発中のものです。2013/07/09(火) NY:AN:NY.ANID:WHyCBKEt
>>93
Texture2D.GetPixel() は、テクスチャの特定のドットのColor構造体を返す
Color構造体にはAlphaも入ってる
0098名前は開発中のものです。2013/07/09(火) NY:AN:NY.ANID:WHyCBKEt
Color構造体はRGBAを0〜1で扱っているから注意
http://docs.unity3d.com/Documentation/ScriptReference/Texture2D.html
0099名前は開発中のものです。2013/07/09(火) NY:AN:NY.ANID:wxLqqgEa
>>93
解決方法はたくさん思いつくけど、なんでおまえのような怠け者にタダで教えてやらなけりゃならないの?
0100名前は開発中のものです。2013/07/09(火) NY:AN:NY.ANID:piIqrNfK
>>99
お前が出来無いのは判ったからもう書き込むな
0101名前は開発中のものです。2013/07/09(火) NY:AN:NY.ANID:wxLqqgEa
>>100
まだまだ書き込むよ。
0102名前は開発中のものです。2013/07/09(火) NY:AN:NY.ANID:aLrF49TP
Javascriptを使っています。
関数を呼び出す際、引数の型が数種類用意されている関数がありますが、
あれはどうすれば自作出来るのでしょうか?

floatを3つ使うかVector3を使うかを選べるような関数のことです。
0103名前は開発中のものです。2013/07/09(火) NY:AN:NY.ANID:WHyCBKEt
>>102
オーバーロードでググれ
Unityのjavascriptで動くかは知らないけど、下のように書けば動くと思う

function Move(vec:Vector3){
//処理
}
function Move(x:Float, y:Float, z:Float) {
//処理
}
0104名前は開発中のものです。2013/07/09(火) NY:AN:NY.ANID:NO9WJ/Zo
JavaScriptなんかやめちまえ!
0105名前は開発中のものです。2013/07/09(火) NY:AN:NY.ANID:zSC3uj1Q
>>96
color 配列は、int 型なのに暗に、float 型を期待していないか?

if((turn==0 && color[r2,c2]<=0 || (turn==1 && color[r2,c2]>=1)){

if((turn==0 && n<=0.0f) || (turn==1 && n>1.0f)){

この行の書き換えでどうなるか試してみて欲しい。
0106名前は開発中のものです。2013/07/09(火) NY:AN:NY.ANID:aLrF49TP
>>103
ありがとうございます、ただ単純に2つ書いてしまえば良いのですね。
0107名前は開発中のものです。2013/07/09(火) NY:AN:NY.ANID:hP0cZcht
>>93
レイヤーもしくはタグの設定かな?
幾通りもあって具体的なコンテンツの概要によって様変わりしてくるから一概に言えないんだわ。
Unityはプロ用ツールなんでメチャ細かいんだよね。
で ここが肝なんだけど細かい割にプログラミングの自由度が無いのでメチャクチャ勉強しないといけない。
0108名前は開発中のものです。2013/07/09(火) NY:AN:NY.ANID:ol0evQj0
>>93
単純にコライダをセットしてRayCastで当たり判定
つけたほうがシンプルな気がする
0109名前は開発中のものです。2013/07/09(火) NY:AN:NY.ANID:NmJrzQPl
>>108
RayCastってポリゴン単位の交差判定じゃね
見かけ上の透過処理で透明に見えてるだけのピクセルとか判断出来ないんじゃね
0110名前は開発中のものです。2013/07/09(火) NY:AN:NY.ANID:WHyCBKEt
>>93
すまん>>97は忘れてくれ
自前で計算する必要は一切無くて、これらを順番に使うだけでイケると思う
Camera.ScreenPointToRay()
Physics.Raycast()
RaycastHit.textureCoord
Texture2D.GetPixelBilinear()
■ このスレッドは過去ログ倉庫に格納されています