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

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

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

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

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

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

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

■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←スクリプトのエラー番号をこれで検索すると原因が日本語で出てきます。
0169名前は開発中のものです。2014/08/14(木) 14:22:58.69ID:x/wXFTVz
>>168
アセットをかえば取れますよ
0170名前は開発中のものです。2014/08/14(木) 14:32:44.70ID:z7hCwaDW
アセットとは何ですか?
0171名前は開発中のものです。2014/08/14(木) 15:28:26.23ID:Hq5qNBfI
>>167
半透明描画されるからテキストの間に他の半透明なオブジェクトが入っているとドローコールが分割されるようだ

テキストが常に画面の一番手前に描画されるのであれば
間に他の半透明オブジェクトが入らないようにテキストの位置を調整するか
テキストはレイヤーを分けて別のカメラに描画させるか
すれば1回で描画されるんじゃないのかな

テキストが他のオブジェクトに隠れたりするんなら知らん
0172名前は開発中のものです。2014/08/14(木) 18:29:18.52ID:O4dKumIk
>>171

カメラのレイヤーを分けたところドローコールがかなり減少しました。
教えてくださってありがとうございました。
0173名前は開発中のものです。2014/08/14(木) 20:17:12.54ID:z7hCwaDW
明日コミケで売られるUnityブースでのゲームディスクにはソースコードやアセットなど
開発に役に立つ物は入ってますんか?
0174名前は開発中のものです。2014/08/14(木) 20:37:46.38ID:b5izg2+e
アセットはアセットストアで購入しましょう
0175名前は開発中のものです。2014/08/14(木) 22:42:50.59ID:XjZrUYTs
GetComponentで同じオブジェクトにアタッチされたスクリプトを取得したいのですが
目的のスクリプトを別のスクリプトに変えてもそのままそのスクリプトを取得するようにできますでしょうか
キャラクターのAIソフトとして入れ替えられるようにしたいのですが
0176名前は開発中のものです。2014/08/14(木) 22:43:20.31ID:x/wXFTVz
>>175
アセットを購入すれば簡単ですよ
01771322014/08/14(木) 23:06:25.69ID:mRRRa5I/
>>139
遅くなったけどありがとう
コンポーネント取得のところでミスしてたみたいでそういうことはできないのかと思ってたよ
0178名前は開発中のものです。2014/08/14(木) 23:22:50.62ID:sPAMaztz
>>175
各スクリプトに共通のインターフェイス乗っけたらうまく行かんかな?
01791262014/08/15(金) 01:01:06.43ID:gxPoAiCH
>>143
おお〜!参考になります。
gameObject.transform.root って記述は初めて知りました。とても使えそうです。
ありがとうございます
0180名前は開発中のものです。2014/08/15(金) 02:49:13.04ID:1LeycAJJ
GUI の Label にて wordwrap でテキストの回り込みをさせたとき、
スクリプトで行間の高さも指定する方法はありますか?
0181名前は開発中のものです。2014/08/15(金) 08:07:08.33ID:pp+iGN13
>>180
アセットをかってみるとできるかもしれませんね
0182名前は開発中のものです。2014/08/15(金) 11:10:50.20ID:pQkWFfv7
>>164
できない。そういうメソッドオーバーロードはない。
>>175
できない。違うスクリプトは違うクラスなのだから同じ
GetComponentで取得することはできない。
0183名前は開発中のものです。2014/08/15(金) 11:58:25.31ID:mzFPz0GG
>>175, >>182
1つのGetComponentで違うクラスを取得できないのは確かにその通りだが、
違うクラスでも同一のスーパークラスを継承したものであれば、
スーパークラスをGetComponentするとスーパークラスで定義された部分は取得できるよ。
例えばスーパークラスでpublic 変数を宣言し、サブクラスで計算結果を代入しておいて、
他のクラスからスーパークラスをGetComponentしたら、計算結果の入った変数にアクセスできる。
0184名前は開発中のものです。2014/08/15(金) 12:09:51.07ID:JGD68MO3
>>164
先にプレハブを読み込んでInstantiateのオーバーロードにrotationを入れればできる。
var prefab = Resources.Load<GameObject>( "PrefabPath" );
var instance = GameObject.Instantiate( prefab, prefab.transform.position, prefab.transform.rotation ) as GameObject;

>>175
基底クラスが同じならできる。
クラスAを継承していれば、クラスBでもCでもGetComponent<A>()で取得できる。

アセットおじさんの次はできないおじさんか…勘弁してくれよ……
0185名前は開発中のものです。2014/08/15(金) 12:59:46.06ID:g0u3iocd
アセットをかえばなんでもできますよ、UNITYは
できないおじさんには困ったものですね
0186名前は開発中のものです。2014/08/15(金) 13:06:21.71ID:UFK9JcdF
>>185
どのアセットを使えばプログラミングせずに>>175を実現できるのか教えて欲しい
割とマジで
0187名前は開発中のものです。2014/08/15(金) 13:43:40.08ID:SBGZ0lU9
つまりアセットを買わないと何もできない?
0188名前は開発中のものです。2014/08/15(金) 13:59:16.31ID:1LeycAJJ
>>180
これ、Label 以外でも良いので、
行間調整できるシステムフォント表示の方法、無いでしょうか。
0189名前は開発中のものです。2014/08/15(金) 14:26:21.04ID:g0u3iocd
>>188
アセットがかえばできると思いますよ
アセットストアで探しましょう
無料アセットを探してもダメですよ
0190名前は開発中のものです。2014/08/15(金) 15:59:35.32ID:UFK9JcdF
>>189
どのアセット使うの?
0191名前は開発中のものです。2014/08/15(金) 18:53:44.70ID:kZAIt/lc
UnityのJavaScriptで列挙型を扱うにはどのように記述すればよいですか?
C#の方が資料多いしそっちに慣れたほうが良いですかね
0192名前は開発中のものです。2014/08/15(金) 19:01:11.56ID:WHWGg501
>>191

enum MYSTATE {
STOP,WALK,RUN
}

funciton GetMyState() : MYSTATE {
return MYSTATE.STOP; // example return value
}

と普通にかけるよ
0193名前は開発中のものです。2014/08/15(金) 19:03:31.88ID:WHWGg501
追記
詳細はMicrosoftの.netのJScriptを調べると良いよ
0194名前は開発中のものです。2014/08/15(金) 19:08:34.23ID:JGD68MO3
>>190

>>183>>184>>175を実現する方法言ってんでしょ!
アセットおじさんはアセットを使えばできるよ以外の言葉発しないから会話しても無駄だよ!
0195名前は開発中のものです。2014/08/15(金) 19:12:37.79ID:g0u3iocd
>>191

アセットをかえばプログラム要りませんよ
0196名前は開発中のものです。2014/08/15(金) 20:37:06.12ID:1LeycAJJ
GUIText を試そうと思い、
スクリプト start 内で下記のように記述しましたが、実行すると画面には何も出ません。

手動でヒエラルキービューに置いた GUIText は表示されています。
ほぼ同じ設定をしているのですが、どうしたら表示されるんでしょうか。

GameObject goTestGui = new GameObject();
goTestGui.AddComponent(typeof(GUIText));
goTestGui.GetComponent<GUIText>().text = "testGUI";
goTestGui.GetComponent<GUIText>().fontSize = 18;
goTestGui.GetComponent<GUIText>().font = new Font("Arial");
goTestGui.GetComponent<GUIText>().color = Color.blue;
goTestGui.transform.position = new Vector3( 0.1f, 0.1f, 0.0f );
0197名前は開発中のものです。2014/08/15(金) 21:04:25.90ID:g0u3iocd
>>196
アセトを買いましょう!表示されますよ
0198名前は開発中のものです。2014/08/16(土) 04:48:54.95ID:626RbEma
>>183
>>184
ありがとうございます!
なるほどクラスの継承を使えばいいのですね
rotationの取得は一旦プレハブとして取得すればいいと
非常に参考になりました
0199名前は開発中のものです。2014/08/16(土) 09:00:57.48ID:XTkGjVBn
アセット買ってもできませんでした>_<
って書いたらどういう反応するんだろうね?
0200名前は開発中のものです。2014/08/16(土) 12:34:39.74ID:giYDLQib
アセットを買えばできるようになりますよ

っていうに決まってるでしょ(´・ω・`)
0201名前は開発中のものです。2014/08/16(土) 12:55:37.22ID:i1FdYvXb
インスペクターのヘルプアイコンから日本語版のマニュアルを見る手段ってある?
0202名前は開発中のものです。2014/08/16(土) 16:00:28.75ID:Bgv4pORG
>>201
アセットを買ったら見ることができると思いますよ
0203名前は開発中のものです。2014/08/16(土) 16:54:06.47ID:pGIxIPwH
>>199
保守用Botなのでスルーでおっけー
意味のある返事はしない
0204名前は開発中のものです。2014/08/16(土) 17:25:46.43ID:xvUUuA/I
しないんじゃなくて
出来ないんだよ
0205名前は開発中のものです。2014/08/17(日) 01:31:51.73ID:WSu//9t9
AddComponent(typeof(COMPONENT_NAME));
GetComponent<COMPONENT_NAME>().example();

というのを

AddComponent<COMPONENT_NAME>().example();

としても動いてしまったのですが、
これも正しい書き方でしょうか。
0206名前は開発中のものです。2014/08/17(日) 02:05:26.26ID:E+qLFcKa
間違ってない。AddComponentはそのタイプのコンポーネントを返す。

ttp://docs.unity3d.com/ScriptReference/GameObject.AddComponent.html
0207名前は開発中のものです。2014/08/17(日) 02:09:44.21ID:WSu//9t9
>>206
間違って書いたのをあとで見つけて、
それでも動くのでもやもやしていました。

ありがとうございます。
0208名前は開発中のものです。2014/08/17(日) 03:00:00.94ID:2Ljw5zOM
new Texture2D(3,3)をDrawTextureすると、ひし形の画像が出てくるだけど、
new Texture2Dって模様の無い空のテクスチャ作るんじゃないの?

new Texture2D(1,1)ってやれば塗りつぶされたカラーが描画されるけど、
そもそも空のテクスチャって実はUnityが自動で読み込むひし形のテクスチャがデフォで設定されるって事??

リファレンスにも書いてないし、この空のテクスチャって奴は一体何なのさ???
0209名前は開発中のものです。2014/08/17(日) 03:11:25.82ID:E+qLFcKa
初期化されていないメモリの中身など誰も保証しない、
というのがプログラムでの約束事
0210名前は開発中のものです。2014/08/17(日) 03:37:46.06ID:dxQX/v9S
>>208
アセットをかえばアセットがどうにかしてくれますよ
0211名前は開発中のものです。2014/08/17(日) 11:57:56.28ID:cJdZ2OXS
inspector上でscriptの右のボタンをクリックすると
assetsとsceneのscriptの一覧が出てきますよね。
sceneタブには何も表示されないんですが、
ここはどういうフォルダ構成にすれば表示されるのでしょうか?
0212名前は開発中のものです。2014/08/17(日) 23:50:46.52ID:dxQX/v9S
>>211
アセットをかえば表示されますよ
0213名前は開発中のものです。2014/08/18(月) 04:53:24.05ID:uXKh7UDW
AnimatorのAnimationClipのタグを複数登録ってできるんでしょうか
0214名前は開発中のものです。2014/08/18(月) 13:02:21.20ID:qdhKXjRd
transform.localScale += new Vector3(-1,0,0);をpcのスペックごとに
速さが変わるのを調節するためにTime.deltaTimeを使おうとおもったので
すが、できません。
transform.localScale += new Vector3(-1,0,0) * Time.deltaTime;
このようにしました。ちなみに、Time.deltaTimeを消すと、ちゃんと動作
します。
0215名前は開発中のものです。2014/08/18(月) 13:32:27.75ID:FgtPURuH
>>214
アセットをかったらちゃんと動作するよ!
0216名前は開発中のものです。2014/08/18(月) 13:35:21.16ID:/QOTlVyM
どうできないのかがわからんとなんとも言えんかな〜。
ちなみにUpdate()にそれだけ書いた状態だと動く。
つまり何か使い方を間違えている。
0217名前は開発中のものです。2014/08/18(月) 14:27:45.99ID:ARh+Aum/
60 fps 出ているとすると Time.deltaTime ≒ 0.0167 < 1だから、かけると変化量は小さくなる。
実はVector3(-1,0,0) じゃなくてもっと絶対値の小さい値を指定していて
動いているけど変化量が小さすぎて見た目に変化がないようにしか見えないトカじゃないだろうね。
0218名前は開発中のものです。2014/08/18(月) 14:37:38.30ID:JLhwIizL
予め、変化量を別途に宣言、deltaTimeを乗算した後に代入は無理?
0219名前は開発中のものです。2014/08/18(月) 18:28:34.67ID:qdhKXjRd
>>216,217,218さん回答ありがとうございます。
できました。>>217さんのとおり、変化量が小さすぎて変わっているように見えない
のが原因でした。物体が動いている状態だったため短くなっていることに気づきませんでした。
また、しっかりと質問できず申し訳ありませんでした。
3人みなさん教えていただきありがとうございました。
0220名前は開発中のものです。2014/08/18(月) 23:43:20.02ID:WaPZtjZ1
現状でGUItextureはオワコンってのはわかるんだけど、
Unity5になったらSpriteオブジェクトもオワコンになるの?
0221名前は開発中のものです。2014/08/18(月) 23:55:30.25ID:kfy/jK+T
GUItextureは重すぎて害悪だけど、
Spriteは軽いから将来的にオワコンになったとしても寿命は結構あると思う
0222名前は開発中のものです。2014/08/19(火) 11:21:05.58ID:g6kVbLGr
先輩方教えてください。

ゲームのイメージは
transform,Translateを使い強制縦スクロールでうごかして
Sliderで敵を避けると言った感じを考えています。

フリー版のNGUIを使用してHorizonSliderをつくり
Sliderを動かすとplayerも連動して左右動く。
という流れを作りたいです。

スライダー作成は問題なくできましたが
そこから先がよくわかりません。

なんとなく
GameObject.Find("HorizonSlider").GetComponent(Slider)を
playerにアタッチすると思うのですが
うまくいかないだけではなく
それ以上がよくわかりません。

どなたかよろしくお願いします。
0223名前は開発中のものです。2014/08/19(火) 12:17:45.80ID:QiSZCTeY
>>222
フリー版のアセットはダメですよ
アセットは買うと動くと思います
0224名前は開発中のものです。2014/08/19(火) 12:17:46.58ID:MCm34Oqg
ビンボーだからnGUI買ってないけど、スライダーの真ん中の原点を取得。
原点から移動したスライダーの差分を求めて、
それにあわせてプレイヤーの高さを更新すれば多分行ける

……スライダーはOnGUIでも行ける希ガス
0225名前は開発中のものです。2014/08/19(火) 12:26:41.96ID:kx1/iXJi
何がわからないのかわからないレベルだと正直厳しい。
ちゃんとチュートリアル一通りやれば?

スライダーでコントロールと言っても
・スライダーの左右位置にプレイヤーの左右位置も一致する
・スライダーの左右位置でプレイヤーの左右方向への速度が変わる
とかありえるのでそのゲームではどうしたいのか、が問題で
それは本人が決めるしかない。
プログラム自体がわかりません、というのは勉強するしかないが
そうでないなら大概の場合どうすればいいかがわからないというのは
自分がゲーム自体をどうしたいのかが曖昧にしかイメージできてない、
ということ。
そういうことはプログラムの知識など全くなくてもできるし
そういうことをしないとかなり単純なゲームでもできあがらない。
0226名前は開発中のものです。2014/08/19(火) 12:28:58.36ID:QiSZCTeY
アセットをかって使えばプログラムなしでゲームは作れますよ
0227名前は開発中のものです。2014/08/19(火) 14:54:13.25ID:g6kVbLGr
>>225
勉強するしかないのは仰るとおりなんだけど
自分の勉強の仕方はやりながら覚える派だからとりあえず作ってみてる。
写経はどうも性に合わなくて。

そのせいで迷惑かけたようならすみません。
もう少し試行錯誤してみます。
0228名前は開発中のものです。2014/08/19(火) 16:14:02.73ID:kx1/iXJi
迷惑とかいうことはないけどねw
具体的なやり方をある程度書くなら

using UnityEngine;
using System.Collections;
public class test : MonoBehaviour {
UISlider sl
Vector3 pos;
void Start () {
sl = GameObject.Find("HorizonSlider").GetComponent<UISlider>();
pos = transfrom.position;
}
void Update () {
pos.x = (sl.sliderValue-0.5f)*10f;
transform.position=pos;
}
}
とでも書いたC#スクリプトをプレイヤーオブジェクトにでも放り込んでおけばとりあえずは動く。
0229名前は開発中のものです。2014/08/19(火) 16:22:53.54ID:kx1/iXJi
悪い、色々誤植があったw

using UnityEngine;
using System.Collections;
public class test : MonoBehaviour {
UISlider sl;
Vector3 pos;
void Start () {
sl = GameObject.Find("HorizonSlider").GetComponent<UISlider>();
pos = transform.position;
}
void Update () {
pos.x = (sl.sliderValue-0.5f)*10f;
transform.position=pos;
}
}
0230名前は開発中のものです。2014/08/19(火) 16:38:07.64ID:kx1/iXJi
或いはもうちょっとスムーズに動かしたいなら
using UnityEngine;
using System.Collections;
public class test2 : MonoBehaviour {
UISlider sl;
Vector3 pos;
Vector3 dump=Vector3.zero;
public float smthTime=1f;
public float maxSpd=3f;
void Start () {
sl = GameObject.Find("HorizonSlider").GetComponent<UISlider>();
pos = transform.position;
}
void Update () {
pos.x = (sl.sliderValue-0.5f)*10f;
transform.position = Vector3.SmoothDamp (transform.position, pos, ref dump, smthTime, maxSpd);
}
}
とかでもいい。
もう少し簡易にVector3.LerpやVector3.Slerpでもいいだろうし。
0231名前は開発中のものです。2014/08/19(火) 16:38:34.72ID:SDJ5Szcg
皆さんが優しすぎて甘えてしまいそうです
0232名前は開発中のものです。2014/08/19(火) 19:25:32.04ID:MCm34Oqg
すみません、FPS作ってるのですが、アセットから辛うじてカメラ正面にRayを飛ばして模擬的に弾丸を真似してるのはわかったのですが、
その際の銃本体の視点への追従の仕組みが分かりません。
単に、銃をRayがヒットした場所にLookAtでよろしいのでしょうか?
だとしても、リロード時の銃身の動きはスクリプトでできるものなのでしょうか。
0233名前は開発中のものです。2014/08/19(火) 20:48:43.96ID:QiSZCTeY
>>232
アセットは買いましたか?
0234名前は開発中のものです。2014/08/19(火) 21:01:23.92ID:ARA40/9x
>>232
作りのレベルにもよるんだろうけどああいうのは基本的に
FPS用の腕と銃みたいなのをカメラに親子付けしとけばいいんじゃね?
リロード用のアニメーションつけておいて
リロード時はそれを再生する。
0235名前は開発中のものです。2014/08/19(火) 21:04:05.83ID:eg7yj5lw
ステータスとかキャラの位置を表示するためのビルボードを表示させてるんだけど
それの描画がスクリーン座標上で重なってしまった時に後側のビルボードを重ならない位置にずらすってどういうアルゴリズムで実装すればいいんだろうか
0236名前は開発中のものです。2014/08/19(火) 21:20:12.42ID:ZLkux2zU
>>230

やさしいのぉ
やさしいのぉ〜(;_;)

ありがとう。
わからないことがあったらまたバンバン聞くぜっ。
0237名前は開発中のものです。2014/08/19(火) 21:26:20.12ID:cYa/Ca0p
その代わり自分の知ってることを誰かが質問してたら教えてやれ
0238名前は開発中のものです。2014/08/19(火) 21:32:24.25ID:MCm34Oqg
>>234
ありがとうございます。やっぱりあのモーションをスクリプトで実現するのは骨が折れますよね…
0239名前は開発中のものです。2014/08/19(火) 21:33:44.62ID:ARA40/9x
>>235
言ってしまえば物理処理の衝突と同じなんじゃね?
重なりを検出してどの方向に押し出すか決めて移動させる。
前後をどうするのかとかは自分で決めるしかないけど
それが決まれば前後順にソートして前から優先で位置決めしていけばいい。
0240名前は開発中のものです。2014/08/19(火) 21:36:22.98ID:QiSZCTeY
>>235
アセットをかえば簡単にできますよ
0241名前は開発中のものです。2014/08/19(火) 21:40:14.53ID:HJlGowUA
予めモデルにくっ付いてるアニメーションは
他のモデルに流用出来ないのでしょうか?
0242名前は開発中のものです。2014/08/19(火) 21:40:50.36ID:eg7yj5lw
>>239
やっぱりレイ投げたり当たり判定取って後は地道な移動する感じかな
地道に処理書きます
ありがとう
0243名前は開発中のものです。2014/08/19(火) 21:44:44.48ID:ARA40/9x
>>241
まったく同じ構造・名前の骨なら
そのままどういう手段でも使える。
mecanimでHumanoidなら
多少違う構造でもある程度使える。
場合によってはおかしくなる。
0244名前は開発中のものです。2014/08/19(火) 22:00:41.94ID:HJlGowUA
>>243
Humanoidでスキニング行列の動作確認も出来ているにも関らず動かない場合は
アニメータコントローラの条件等の設定ミスを疑うべきでしょうか?
0245名前は開発中のものです。2014/08/19(火) 22:30:36.80ID:ARA40/9x
>>244
まぁコントローラ側の設定がおかしければ
それはもうアニメーションの問題ではないからなぁw

プレビューウインドウで適切にアヴァター選んで動くようなら
アニメーションのデータ自体は大丈夫なはず。
0246名前は開発中のものです。2014/08/19(火) 23:07:10.23ID:x5wCXhk9
>>245
ですよね
ありがとうございました
0247名前は開発中のものです。2014/08/19(火) 23:16:22.04ID:gRimHKsi
MonoDevelopで「.」を押すと補完されるおせっかい機能はどうすれば無効にできますか?
0248名前は開発中のものです。2014/08/20(水) 02:15:09.21ID:xJA8Et7G
>>247
アセットをかえば無効にできますよ
0249名前は開発中のものです。2014/08/20(水) 06:36:03.86ID:87IaKluD
PlayerSettingsで設定するWindowsのScreenResolutionがなぜか反映されない・・・
前回ビルド時の画面サイズが勝手に適用されてしまう
0250名前は開発中のものです。2014/08/20(水) 08:17:08.43ID:xJA8Et7G
>>249
アセットをかえばいいとおもいますよ
0251名前は開発中のものです。2014/08/20(水) 08:50:10.78ID:7+eCtfZ1
>>247
ToolsメニューのOptionsを選択して
TextEditorのGeneralを選択して
Enable code completionのチェックをはずす
0252名前は開発中のものです。2014/08/21(木) 00:06:01.69ID:UjCIVMhj
public const Vector3 xxxxx = new Vector3(0f, 0f, 0f)

って出来ないんでしょうか。
やったけどエラーになりました。
0253名前は開発中のものです。2014/08/21(木) 00:18:33.25ID:LR/WB4rJ
>>252
アセットをかえばいいとおもいますよ
0254名前は開発中のものです。2014/08/21(木) 00:23:48.83ID:ZMzzdvjf
一番後ろ、;(セミコロン)がない…ではないですよね
すみません、javascript派の私にはC#の文法すら不安定なんです…
0255名前は開発中のものです。2014/08/21(木) 00:32:13.99ID:uELHl3ca
>>252
なんかそれはできないらしいよ。
この辺参照
ttp://answers.unity3d.com/questions/60262/the-type-unityenginevector3-cannot-be-declared-con.html
0256名前は開発中のものです。2014/08/21(木) 01:07:26.32ID:8d94nKJq
初めてビルドしたんだけど、Webビルドしてブラウザで実行させるとGUIボタンがクリック出来なかったんだ。

ゲーム開始直後に変数trueでGUIボタンを表示するようにスクリプト書いてたんだけど、その変数は宣言時にfalseを代入してたんだ。
まさかと思ってStartメソッドでfalse代入するように書き換えてWebビルドしたら、GUIボタンがクリックできるようになったんだ。

スタンドアロンのビルドは変数宣言時代入でも普通に動作してたんだけど、WebビルドってStart内で変数初期化しないとダメなの?
0257名前は開発中のものです。2014/08/21(木) 01:11:30.95ID:LR/WB4rJ
>>256
アセットをかえばできると思いますよ
0258名前は開発中のものです。2014/08/21(木) 02:02:32.74ID:WTALi2BO
>>257
アセットをかえばできると思いますよ
http://unity3d.com/unite/unite2014/keynote
0259名前は開発中のものです。2014/08/21(木) 02:07:58.69ID:FY4IWOMe
Vector3.zero
0260名前は開発中のものです。2014/08/21(木) 03:03:48.60ID:iTAS0eP5
>>256
public bool useGUI = false;
とかpublicで宣言してたりしたらインスペクタで値を設定しちゃうとシリアライゼーションでシーンにインスペクタの値で保存されちゃうんだけど間違ってそういう操作したりしてないか?
0261名前は開発中のものです。2014/08/21(木) 16:34:35.64ID:Jqw6iCnU
 プレイヤーキャラクターごと動く「動く床」を作りたいんですがやり方がわかりません。分かる人いたら教えて下さい。

 現状、色々ググった結果、
「動く床」の子要素にキャラクターを持ってくれば一緒に動いてくれるようだと理解しました(あってるかどうかはさておき)
(例えば http://blog.be-style.jpn.com/article/58581741.html )

そこで試しに作ってみたケース1がこれです↓
( https://3ac7952d4f3d414f13ef5ac978121676474d7eb4.googledrive.com/host/0B3YVex4p4Ui0LXVQaWhSYmVwWnM/UGOKUYUKA.html )

↑で前進 ←→で旋回 ↓でバック スペースキーでジャンプ ドラッグでカメラ回転 右クリックドラッグでズームイン・アウト
OpenDoorを押すと足元のブロック(floor)に力が加わって動きます。動くブロックの上に浮いているブロックに触れている間、ビキニのキャラクターが動くブロックの子要素に入ります

結果、画像のように浮いているブロックに触れている間は「bikini」は「floor」の子要素になり、離れると子要素からも外れます。
http://iup.2ch-library.com/i/i1266692-1408603985.png
http://iup.2ch-library.com/i/i1266695-1408604210.png

ですが、キャラクターはfloorと一緒に動いてくれません。落ちます。

続く
0262名前は開発中のものです。2014/08/21(木) 16:36:11.63ID:Jqw6iCnU
>>261でfloorとキャラクターを結びつけているスクリプトが以下floorとbikiniを結びつけているスクリプトは以下↓

#pragma strict

var player : GameObject;
var floor : GameObject;

function OnTriggerEnter (Other : Collider) {
if(Other.gameObject.tag == "Player"){

player.transform.parent = floor.transform;
}}

function OnTriggerExit (Other : Collider) {
player.transform.parent = null;
}


続く
0263名前は開発中のものです。2014/08/21(木) 16:41:31.12ID:Jqw6iCnU
ケース2がこれです↓
( https://84a708f0eabd3f2702c6ab12a4dde86dc30c463c.googledrive.com/host/0B3YVex4p4Ui0WUhFSkZzODVxaVU/UGOKENAIYUKA.html )

これだとOpenDoorでfloorと一緒に動いてくれますが、今度はキャラクターが操作できません(ジャンプはなぜかできる)。
親子関係のスクリプトは以下

#pragma strict

function OnControllerColliderHit(hit : ControllerColliderHit) {
if (hit.gameObject.name == "floor") {

transform.parent = hit.gameObject.transform;

} else {

transform.parent = null;
}
}

どうすれば動く床と一緒にキャラクターを動かせて、かつ操作できるんでしょう。
0264名前は開発中のものです。2014/08/21(木) 16:55:58.91ID:qmSeZOfZ
>>263
アセットをかえば簡単楽にできますよ
0265名前は開発中のものです。2014/08/21(木) 18:14:44.56ID:ZMzzdvjf
おそらくキャラクター操作のスクリプトの位置更新情報がワールド座標だから、上書きされてるとか?

ケース2の場合は、完全に、足場とポジションを同期しちゃってるじゃん…

多分、各当たり判定系のスクリプトの更新順序とかだろうけど、もっと詳しい人に期待

位置を更新するときに加算でポジショニングが出来ればいいんだろうけど
これの上下運動版がアングリーボットにあったはず
もしかしたら参考になるかもしれない
0266名前は開発中のものです。2014/08/21(木) 19:02:40.96ID:F8+uwHwG
http://japan.unity3d.com/developer/document/tutorial/2d-shooting-game/game/10.html
このチュートリアルまで無事終わらせて、一旦Unityを終了させて再度起動→テストプレイすると

NullReferenceException: Object reference not set to an instance of an object

Manager.IsPlaying () (at Assets/Scripts/Manager.cs:41)

Emitter+<Start>c__Iterator0.MoveNext () (at Assets/Scripts/Emitter.cs:29)

というエラーが出ました。
ManagerオブジェクトのManagerスクリプトコンポーネントを一度消去して
再度同じコンポーネントを取り付けるとエラーが出ずにテストプレイできたのですが
Unityを再起動した時には、やはりエラーが出ます

これは何が原因なんでしょうか
あとエラーを防ぐ方法はありますか?
0267名前は開発中のものです。2014/08/21(木) 19:15:42.29ID:qmSeZOfZ
>>266
その手のエラーは、よくあって解決方法としては、アセットをかうことをオススメします
0268名前は開発中のものです。2014/08/21(木) 20:19:39.49ID:uELHl3ca
>>266
Managerの中のタイトルオブジェクトが取得されない内に
Emitter側がManagerのタイトルオブジェクト参照してる
関数を呼び出そうとしてる、というのが原因。

解決方法は正直よくわからないw

・スクリプトの実行順序をExcuteOrderで決めてしまう(恐らく確実)
・Managerのタイトルオブジェクトtitleについてpublicにした上でインスペクターで対象を設定してGameObject.Find()は削除。(まず間違いなく確実)
・Managerオブジェクトから一度全部スクリプトを削除して登録の順番を変えてみる(効果あるかわからん)

とか、そんなあたりか?
■ このスレッドは過去ログ倉庫に格納されています