トップページ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←スクリプトのエラー番号をこれで検索すると原因が日本語で出てきます。
0138名前は開発中のものです。2014/08/13(水) 14:54:31.58ID:aaRkIs3i
rigidbodyの物理演算を用いずに壁にあたったらキャラが止まる処理を作りたくて
if(other.gameObject.tag == "Wall"){
transform.position.z -= movedZ;
transform.position.x -= movedX;
}
OnTriggerEnter()に壁にあたっていたら移動した分、座標を戻す処理を書きました。
結果としてちゃんとぶつかった時にぶつかる前の座標に戻ったんですが、最初に壁にあたった時しか実行されませんでした。
それでStayにも同じ処理を書いたのですがStayが毎フレーム呼び出されなくて、ぶつかり続けると少しずつ壁をすり抜けようとしてしまいます。

このあたりの仕様はどうなってるんでしょうか?
また、キャラが移動して壁に当たったら止まるコードのサンプルがあれば教えて頂きたいです。
0139名前は開発中のものです。2014/08/13(水) 16:30:27.79ID:W13qzhiV
>>138
この辺
ttp://docs.unity3d.com/Manual/ExecutionOrder.html

Update()で移動してたらOnTriggerで戻しても
その直後のUpdate()でまためり込む。
物理使いたくないとかいってもOnTrigger使ってる時点で
物理演算使っているので動作は全てFixedUpdate()でやるべき。

>>136
Transitionのanimatorのatomicのチェックボックスるをはずせば
同位のトランジションに対しては途中から切り替え可だと思う。

>>132
空のGameObjectにMeshFilterとMeshRendererコンポーネントを追加して
Prefabをロードした上でそのMeshをMeshFilterに、
そのMaterialをMeshRendererに送ってやればいいんじゃね?
0140名前は開発中のものです。2014/08/13(水) 16:30:51.26ID:aaRkIs3i
自己解決しました。

衝突とか物理演算に関わる場合は移動の処理もFixedUpdate()に書かないとダメなんですね・・・
あるサイトの"フレームの進行と物理シミュレーターの進行はそれぞれ独立している"
という一文で気づきました・・・
道理で時々フレーム落ちするような感じでStayが呼ばれなかったんですね。
0141名前は開発中のものです。2014/08/13(水) 16:55:31.12ID:aaRkIs3i
>>139
ありがとうございます、とてもわかりやすいのでブクマしました。
当たり判定取ってるだけだから物理というより数学じゃない?って思ってましたけど
rigidbody使ってる時点で物理エンジンを使ってるという所に気づくべきでした。
0142名前は開発中のものです。2014/08/13(水) 17:04:49.62ID:M12iy21k
>>136
>>139に付け加えて言うと切り替えられるトランジションには優先順位がある
アニメーションクリップのInspecterにあるトランジションの一覧でドラッグすれば入れ替えられる
優先順位は上にあるほど高く 下にあるトランジションを再生中により上のトランジションの再生条件が満たされたらそちらに切り替わる
0143名前は開発中のものです。2014/08/13(水) 17:15:10.28ID:M12iy21k
>>137
http://bribser.co.jp/blog/get-collision-of-child-object-with-unity/
これとかいいんじゃない?

ボーン構造は複数階層あるから
parent = gameObject.transform.parent.gameObject; は
parent = gameObject.transform.root.gameObject;
にするかInspectorで親を指定してやるようにするといいかも
0144名前は開発中のものです。2014/08/13(水) 17:55:36.52ID:aaRkIs3i
連投で申し訳ないですがColliderを好きなタイミングで衝突の判定をさせることは出来ますか?
坂道の判定を実装したいのですが、
キャラの移動時に地形と衝突している場合、キャラを少し上に動かした所でキャラが地形と衝突していなければ
上り坂として判定してキャラを上に動かした後、地形に着地するまで下に動かすといった事をやりたいです。
0145名前は開発中のものです。2014/08/13(水) 18:06:52.97ID:W13qzhiV
>>144
OnCollisionEnter等の判定は上で示した
ドキュメントにあるようにPhysicsループの中でしか呼ばれない。
任意のタイミングで衝突判定を呼ぶ方法はない。
物理エンジンを全部自分で実装するしかない
0146名前は開発中のものです。2014/08/13(水) 18:21:45.19ID:z/cJayoh
>>139 >>142
まさしく欲しい情報でした、ありがとうございます
自分が買った本やサイトにはその辺りが書いてなくて困ってました
最近の本にはMecanim詳しく載ってたりするのかな・・・
0147名前は開発中のものです。2014/08/13(水) 18:40:55.89ID:W13qzhiV
>>144
つーか、普通にColliderでやればいいじゃんって気がするのだが。
言っている事自体はCapsuleCastやLineCastやSphereCastで
できないこともないんだが相手がTriggerだと正直どうしようもないし。
ttp://docs.unity3d.com/ScriptReference/Physics.html
0148名前は開発中のものです。2014/08/13(水) 19:57:22.16ID:aaRkIs3i
>>147
またまた的確なアドバイスありがとうございます。
0149名前は開発中のものです。2014/08/13(水) 21:02:30.34ID:NQcGFCrA
ストアでフリーの素材をダウンロードするとダウンロード失敗と表示されるのですが、原因はなんでしょうか?ブラウザからもUnityからもダメでした。
0150名前は開発中のものです。2014/08/13(水) 21:21:54.23ID:i0Blr7kf
>>149
サーバの調子が悪いときにはよく起きる
0151名前は開発中のものです。2014/08/13(水) 21:38:56.76ID:uHYNBgZQ
凄く初歩的な事なんですけど、変数の初期値を入れるのは
クラス宣言直下とStartメソッドどっちの方がいいんでしょう?
0152名前は開発中のものです。2014/08/13(水) 21:44:02.42ID:NQcGFCrA
>>150
よくあることなんですね。
ありがとうございます。
0153名前は開発中のものです。2014/08/13(水) 21:54:46.24ID:uNXNmse0
iphone向けにシューティングゲームを作っています。
CPUの負荷について教えてください。

タイトル画面→ゲーム→結果画面→またタイトル画面…

という感じで繰り返しテストをすると、
徐々にCPUの使用率が上がっていき、
FPSも下がっていってしまいます。

シーン間で引き継いでいるのは
シングルトンにしたマネージャクラスと、
スコアの数字程度なので心当たりがありません。

シーン間でオブジェクトは破壊されると聞いてますし、
実際に一時停止してヒエラルキーを見ても
増殖しているオブジェクトは見当たりません。

こういうとき、原因の調べかたって、
なにかコツがありますか?
0154名前は開発中のものです。2014/08/13(水) 22:09:46.72ID:i0Blr7kf
>>151
private,protectedならどっちでやってもかまわない
publicの場合Startで設定するとインスペクタで設定した値が失われる。
0155名前は開発中のものです。2014/08/13(水) 22:46:59.87ID:uNXNmse0
解決しました
0156名前は開発中のものです。2014/08/13(水) 22:54:16.87ID:Z9ktVoUp
>>155
in English.
0157名前は開発中のものです。2014/08/13(水) 23:28:44.20ID:uHYNBgZQ
>>154
あれ、そうなんですか。パフォーマンス的な違いが出るかと思ってました。どうもです
0158名前は開発中のものです。2014/08/14(木) 00:09:06.04ID:hgkTWqft
>>156
I'm kaiketued it. :-)
0159名前は開発中のものです。2014/08/14(木) 03:05:05.45ID:5urAdSMC
アセットストアで思い出した。

確か、あれ日本語化すると一部アセットはダウンロード失敗するんだよな。エラーメッセージでググっても出ないから焦ったわ。

なぜアセットストアだけ日本語化されたのか不思議。

あと韓国語も必要ないだろ
0160名前は開発中のものです。2014/08/14(木) 03:15:12.09ID:y4hGaEYI
editorWindow作ってて、
コンパイルエラーしてると固まるのなんとかならないかね。
Windowの強制終了とかあるんかね。
0161名前は開発中のものです。2014/08/14(木) 09:27:38.24ID:oFqVM56n
>>160
アセットを買えば なんとかなりますよ
0162名前は開発中のものです。2014/08/14(木) 11:08:26.02ID:O4dKumIk
テキストの表示に関して質問したいのですが、例えば敵の名前やダメージを個別に表示する場合
text meshやGUItextを使用するとドローコールが一体につき一つ増えてしまうのですが、一般的にはどうやって回避しているのでしょうか?
それとも、ダメージ表示などは別のやり方で表示しているのでしょうか?
0163名前は開発中のものです。2014/08/14(木) 11:19:02.95ID:TU3zOrH7
>>162
DrawCallを本気で減らしたい(たぶんスマフォがターゲット?)なら自前でテキストを描画するGameObject内で独自に頂点描画しないと駄目。
NGUIなんかはテキストが同一フォントの場合直上のUIPanelに押しつけるようにして描画してる。
どちらにせよ同一Shader,Materialで纏めないといけないんで苦労はあんまりかわらんかも。

PCやMac向けならそこまで気にしないで大丈夫(どっちかつーとDynamicなGameObjectブジェクトを大量に持つ方が重い)
0164名前は開発中のものです。2014/08/14(木) 11:29:56.50ID:XjZrUYTs
Instantiateでプレハブからインスタンスを生成するときに
プレハブのTransformで設定されてるRotationを反映させることは可能でしょうか

Instantiate(Resources.Load("Prefab"), transform.position, ??? );
0165名前は開発中のものです。2014/08/14(木) 11:41:12.27ID:TjAgLSPn
>>162
アセットを買えばいいと思いますが
0166名前は開発中のものです。2014/08/14(木) 11:50:20.43ID:Hq5qNBfI
TextMeshを複数おいても勝手にバッチされてドローコール1回で描画されている気がするんだが
0167名前は開発中のものです。2014/08/14(木) 12:22:38.82ID:O4dKumIk
>>163

ありがとうございます。
スマホを想定しています。
シェーダーなど作る必要があるわけですね。
少々ハードルが高いですが挑戦してみたいと思います。

http://marupeke296.com/UNI_PLG_No1_NGUI01.html
このサイトのような手順で作ればよいのでしょうか?

>>166
たしかに、まっさらな状態で追加してみたところ増えませんでした。
ただ、自分の製作中の環境では増えてしまいます。
親オブジェクトが存在して、下にテキスト表示オブジェクトを入れているのですが、関係しているのでしょうか?
0168名前は開発中のものです。2014/08/14(木) 13:28:55.81ID:GVo98wy6
CapsuleCastの引数のpoint1,2ってVector3で渡すことになってますが
直接ワールド座標で指定するのではなくてオブジェクトの位置基準で
ベクトルp1からベクトルp2までの範囲の判定を取るのでしょうか?
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
その代わり自分の知ってることを誰かが質問してたら教えてやれ
■ このスレッドは過去ログ倉庫に格納されています