1 名前:名前は開発中のものです。 [2016/05/02(月) 22:38:08.79 ID:EnZTTc62.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 peace.2ch.net/test/read.cgi/gamedev/1441891966/ ■Unity 2ch Wiki(まとめ、過去ログ、リンク集) www24.atwiki.jp/unity2ch/ ●リンク ・Unity(日本公式サイト) unity3d.com/jp ・ユーザーガイド docs.unity3d.com/ja/current/Manual/UnityManualRestructured.html ・チュートリアル unity3d.com/jp/learn/tutorials ・スクリプトリファレンス docs.unity3d.com/ja/current/ScriptReference/index.html ・FAQ unity3d.com/jp/unity/faq ・MSDN msdn.microsoft.com/ja-jp/ms348103 ←スクリプトのエラー番号をこれで検索すると原因が日本語で出てきます。 前スレ 【3Dゲームエンジン】Unity質問スレッド23 echo.2ch.net/test/read.cgi/gamedev/1457424481/
367 名前:名前は開発中のものです。 mailto:sage [2016/05/15(日) 18:22:38.59 ID:og6lKn5X.net] >>360-361 で、RootMotionって具体的に何なわけ? >>350 のブログから『引用』で答えて見てくれよ 出来るもんならな
368 名前:名前は開発中のものです。 mailto:sage [2016/05/15(日) 18:27:19.33 ID:TvxSLoEr.net] テラシュールがアホなのは周知の事実だと思うが そうか今の若いもんはあんなの見て参考にしているのか お前らがゲーム作れない理由が分かるな
369 名前:名前は開発中のものです。 mailto:sage [2016/05/15(日) 18:54:47.22 ID:5rCIpTx8.net] 今までテラシュール参考になるなって思ってたんだけど、もっといいサイトあるの? 煽りじゃなく普通に聞きたいんだけど、困ったときに役立つサイトのおすすめってなに?
370 名前:名前は開発中のものです。 mailto:sage [2016/05/15(日) 18:57:51.94 ID:AVepg0fR.net] サイト叩きとか無視しろよ 叩いてるほうがおかしいのは、誰が見ても明らかなんだから ほっときゃいいのよ
371 名前:名前は開発中のものです。 mailto:sage [2016/05/15(日) 19:38:13.29 ID:tzCJR6P9.net] >>364 つyahoo知恵袋
372 名前:ウンコマン旭 (黄昏の大砂漠) mailto:agete [2016/05/15(日) 21:15:06.07 ID:kyIYqePn.net] こんばんは! ご無沙汰しております(^v^) 皆さんお元気そうで何よりです(^v^) ところで質問なのですが、例えばAというスクリプト内のBという変数をCというスクリプト内で取得する場合、 通常ではC内にGetComponent<A>.Bと記述すればいいのですが Cスクリプト内のDという変数にBという文字列を代入してD変数を用いてAスクリプト内のB変数を取得するにはどうすればいいのでしょうか? 教えてくだされ(^v^)
373 名前:名前は開発中のものです。 mailto:sage [2016/05/15(日) 21:18:47.07 ID:cPRaUSS5.net] まず服を脱ぎます
374 名前:名前は開発中のものです。 mailto:sage [2016/05/15(日) 21:27:06.08 ID:/NQpYs05.net] >>362 >RootMotionがあるアニメーションならば、ApplyRootMotionでキャラクターの位置を動かす事が出来ます。 ここからRootMotionがアニメーション側に含まれる位置を動かすための情報の事であり、インスペクタのApplyRootMotionをオンにする事でその移動を有効にする事が出来るって事が読み取れないならそりゃわからんだろうなぁ >>367 「C# リフレクション」でググれ
375 名前:名前は開発中のものです。 mailto:sage [2016/05/15(日) 22:29:52.18 ID:71a78U+X.net] >>367 どうしてそんな回りくどい質問するの? いやがらせ? まず、そのなめた顔文字やめろ。
376 名前:名前は開発中のものです。 mailto:sage [2016/05/15(日) 22:39:29.79 ID:6uDPGNBY.net] >>369 そだな、ファルシのルシがコクーンでパージだな
377 名前:名前は開発中のものです。 mailto:sage [2016/05/15(日) 22:48:05.78 ID:og6lKn5X.net] ググれ以上のことを言えないのはつまり知らないからっていうね ここ知ったかが多過ぎるよな
378 名前:名前は開発中のものです。 mailto:sage [2016/05/15(日) 22:59:59.32 ID:Np7vluzE.net] 文字列で参照したいなら至極適切な情報じゃないのん リフレクションって言葉を知らないから調べられなかっただけだろ
379 名前:ウンコマン旭 (黄昏の大砂漠) mailto:agete [2016/05/15(日) 23:16:19.68 ID:W+YFgFtr.net] すみません(^v^) 質問の意図がわかりにくかったですね(^v^) 例えば string A = "test"; string B = "A"; とするとしましょう。 では変数Bを用いて変数Aを呼び出すにはどうすればいいのか? 例えばPerlなら $A = "test"; $B = "A"; とした場合 print ${$B}; でtestと出力されます(^v^) 要するにC#で変数名に変数を指定するやり方が知りたいですよ(^v^)
380 名前:名前は開発中のものです。 mailto:sage [2016/05/16(月) 00:20:48.61 ID:cLT7gUJL.net] >>374 だから「C# リフレクション」でぐぐってでてくるサイト読みなよ ttp://ufcpp.net/study/csharp/sp_reflection.html 変数名を文字列変数から調べられてその内容を取得できるよ まあ性的型付けの宿命としてめんどくさい書き方になるけど、難しいことはなんもないから面倒なら自前でラップしちまえば良い
381 名前:名前は開発中のものです。 [2016/05/16(月) 00:46:48.32 ID:EoOnPIyj.net] 正直C#でそんな変数名でアクセスするとかまず間違ってる。 あと顔文字死ね
382 名前:名前は開発中のものです。 mailto:sage [2016/05/16(月) 01:01:30.56 ID:xrrkYQIo.net] つか基地外に触れるなよ、名前でわかるだろうに
383 名前:名前は開発中のものです。 mailto:sage [2016/05/16(月) 01:05:30.14 ID:DfULn/4/.net] >>375 URLでなく具体的なソース書いたら? たった三行じゃん
384 名前:名前は開発中のものです。 mailto:sage [2016/05/16(月) 01:35:01.36 ID:cLT7gUJL.net] えー逆になんで?コピペで動かんかったの? もうPC落としたし 逆に何がわからんのよ。難しく考え過ぎてない? 不明点書いてくれれば明日動くコード確認して貼るよ
385 名前:名前は開発中のものです。 mailto:sage [2016/05/16(月) 01:45:34.87 ID:MMYVuKCP.net] なんで人の答えに口出したがるんだろう 自分で自分の回答すりゃいいのに
386 名前:名前は開発中のものです。 mailto:sage [2016/05/16(月) 01:47:10.03 ID:8pxJg19b.net] >>379 マジで言ってるのか知らんけどさ 少なくとも>>375 のソースじゃ>>374 のやりたいことは出来ないよ 実装に必要なメソッド三つのうち二つがどこにも載ってないから
387 名前:名前は開発中のものです。 mailto:sage [2016/05/16(月) 01:54:48.97 ID:cLT7gUJL.net] 知らんわい思わせ振りに何となんだよ 自分の抱えた問題で試してエラー出たら調べて直すだけだし。問題解決の糸口にはなるでしょ そんないちゃもんつけるなら君が答えたげなよー 俺は無能ゴミクズでいいよ 満点じゃない回答で悪かったよ目障りでごめんな
388 名前:名前は開発中のものです。 mailto:sage [2016/05/16(月) 02:29:44.49 ID:5g3bclbB.net] ソバを作りたいって言ってる奴にうどん粉渡してあとは試行錯誤で何とかしろ、と 何でうどん粉渡しちゃったんだよ?
389 名前:名前は開発中のものです。 mailto:sage [2016/05/16(月) 03:28:01.17 ID:lLhHxovI.net] なんかヤバい挙動見つけた 謎すぎる 説明下手だけど説明させてくれ UnkoParent ┗Unkochild(リギッドボディとボックスコライダ付き) SikkoParent ┗Sikkochild(リギッドボディとボックスコライダ付き) UnkoParentは元々一つのアセットでプレハブ化されてた それにraycast当てると Unkochild ではなくUnkoParentが返ってくる なぜUnkochildが返ってこないのか謎だけど俺は気にしなかった そうすると"子にレイキャスト当てると親のオブジェクトが帰ってくる"って事になるだろ? なのに下の SikkoParentを親に持つSikkochildにraycast当てるとSikkochildが返ってくるんだよ SikkoParentは元々アセットとして存在しててSikkochildは後からそれに追加された物なんだけど でもゲーム実行中にUnkoParentの下に新しくUnkobro(リギッドボディとボックスコライダ付き)を追加してUnkobro(リギッドボディとボックスコライダ付き)にraycast当てるとUnkoParentが帰ってくるんだよ なんというか もう自分で書いてて少し分からなくなってきたけどコレ明らかにおかしいよな? なんか暗黙的に何かが設定されてるような気がするんだけどそれを操作する手段が分からない 今作ってるゲームではこの謎仕様に触らない他の手段を選ぶ事に決めたからもう良いとして なんか情報あったら教えてほしい
390 名前:名前は開発中のものです。 mailto:sage [2016/05/16(月) 05:06:37.38 ID:qRF1nlwK.net] >>384 単純にそれだけ試すと「そんなことは起きない」。 つまりそこに記述されていない事情によって起きている。 その直接の原因がある状況で起きるバグである可能性もある。 まぁUnkoChildが返ってこないのがおかしくはある。 RigidBodyはコライダを親から切り離す機能がある筈なので。
391 名前:名前は開発中のものです。 [2016/05/16(月) 07:09:49.08 ID:lLhHxovI.net] >>385 焦ってて説明自体間違ってた どちらにしろ >RigidBodyはコライダを親から切り離す機能がある筈なので。 これは知らなかったのでこの一文のおかげで問題が解決した... 実際には UnkoParent(リギッドボディ) ┗Unkochild(ボックスコライダ) SikkoParent ┗Sikkochild(リギッドボディとボックスコライダ付き) だった... ありがとう
392 名前:名前は開発中のものです。 mailto:sage [2016/05/16(月) 09:03:31.65 ID:crYLp3Kw.net] >>369 を書いて寝てる間にまたレベルの低いやり取りしてるなぁ 外野でごちゃごちゃ言ってるのはまあただの低脳煽りだから放置するとして >>375 は他人の回答に的はずれな付け足しするのやめてくれw コード書かなかったのはリフレクションのような初心者にお勧め出来ない選択を提示するから、使いたいなら自分で調べて使い方だけじゃなくデメリットや注意点などを把握してから使え、調べられないなら諦めろって意図があるんだわ 回答するの自体は良いことだが、知識の足りないものを無理に答えても間違えたり言葉足らずになったり良いことはないぞと
393 名前:名前は開発中のものです。 mailto:sage [2016/05/16(月) 09:51:44.12 ID:X1sIBbE8.net] しかしこの>>387 コード書けないのを誤魔化したくて必死である
394 名前:名前は開発中のものです。 mailto:sage [2016/05/16(月) 10:10:00.07 ID:0Xs/7U7M.net] つかリギッドボディてなんだよリギッドボディって 英語の発音聞いててもローマ字読みしてもこんな言い方にはならねえだろ まじでアホな基地外には触るなよ、居着かれるぞ
395 名前:名前は開発中のものです。 mailto:sage [2016/05/16(月) 10:39:55.62 ID:lLhHxovI.net] rigidbodyはどう読んでも re-git-buh-die つまりリギッドボディで正しい
396 名前:名前は開発中のものです。 mailto:sage [2016/05/16(月) 10:48:29.95 ID:xXlFZibz.net] 表記揺れにやたらこだわるのはアスペだってばっちゃが言ってた
397 名前:名前は開発中のものです。 mailto:sage [2016/05/16(月) 10:53:59.97 ID:qRF1nlwK.net] 表記はどうでもいいとは思っているけどrigidの発音はrid??dなので 日本語的にはリジッドだとは思うね。
398 名前:名前は開発中のものです。 mailto:sage [2016/05/16(月) 11:43:39.35 ID:crYLp3Kw.net] >>388 i.imgur.com/OkGTIwa.jpg
399 名前:名前は開発中のものです。 mailto:sage [2016/05/16(月) 12:10:48.96 ID:U29GebaE.net] まあ最近はグーグルさんが発音教えてくれるから… リジドッだな
400 名前:名前は開発中のものです。 mailto:sage [2016/05/16(月) 13:01:41.96 ID:ZpDfvZPR.net] Rigid Snake
401 名前:名前は開発中のものです。 mailto:sage [2016/05/16(月) 15:12:26.75 ID:DzDIFYv6.net] 3Dで1000以上の弾幕を扱うとき他の言語なら全弾ループさせて8分木で当たり判定を行ってるんだが UnityではコンポーネントのRigidbodyとColliderでTrigger拾っても同じような低負荷の動きしてくれるんだろうか?
402 名前:名前は開発中のものです。 mailto:sage [2016/05/16(月) 16:07:14.48 ID:crYLp3Kw.net] >>396 当たり判定以前の問題として弾幕シューティングに物理演算が必要なのかを考えるべきじゃないかね? 必要のない物理演算を1000以上も行ってりゃ当たり判定以前の問題として重くなるのは自明だろう 1000以上の弾が全て物理演算で跳ねまわってるなら…まあ頑張れとしか言えんわ
403 名前:名前は開発中のものです。 mailto:sage [2016/05/16(月) 16:26:24.83 ID:GrYRZPI3.net] unityを勉強し始めた者なので、unityの勉強の仕方について質問があるのですが unityの本やどこかのサイトにのっているソースコードをそのまま入力したのに動かないといったことで とても悩んだ時期はみんなにはなかったでしょうか? ありましたら、どのようにそれを乗り越えたか教えていただけないでしょうか。
404 名前:名前は開発中のものです。 mailto:sage [2016/05/16(月) 16:32:45.96 ID:k08iYygc.net] >>398 俺はコピペそのものをやめた コピペするにしても、ちゃんと理解した上でないと、結局は細かいところ弄りたくなったときに困る。 おまけにそのコピペの仕様に他の部分も合わせなきゃいけなくなったりすると余計にワケわからなくなったりする。 だから、最終的には同じものになるにしてもコピペじゃなくてソースを見ながら自分で打ち込む方がいいと思う。
405 名前:名前は開発中のものです。 mailto:sage [2016/05/16(月) 16:33:40.02 ID:MMYVuKCP.net] >>398 Unityの場合はバージョンで動作が大きく異なるとかあるから 古い参考書は使えない場合もあるよ 古いってのは3ヶ月以上前とか 動かないのは、悩んで調べまくるしか無い 調べる行為、自分で解決する力が、すなわちプログラマの技量と言ってもいい そのまま入力して何がどうなってるかわからんってのは 単純におまいのレベルが足りてない そのサンプルはまだ早い もっと簡単な別のサンプルを見つけて勉強すべき 一番確実なのは公式 まずこれやれ tutorial.unity3d.jp/
406 名前:名前は開発中のものです。 mailto:sage [2016/05/16(月) 16:44:25.36 ID:xKUVOT6G.net] チュートリアルやるの面倒くさいしC#覚えたくもないこのスレの住人には 本にあわせた古いUnityのバージョンでやれって言う どうせそんなアホみたいな事を聞くのはそのままコピペして貼りあわせて動かすことしか出来ない連中なんだから
407 名前:名前は開発中のものです。 mailto:sage [2016/05/16(月) 16:48:49.60 ID:qRF1nlwK.net] >>398 普通に言語ができてりゃエラーコード見て解決可能 言語ができないとすぐそうなる 真面目に一からちゃんと言語やることだよ Unityに捕らわれないスキルだし損になることも絶対にない もっといえば高校までの数学と英語だ。
408 名前:名前は開発中のものです。 mailto:sage [2016/05/16(月) 16:58:16.24 ID:DzDIFYv6.net] >>397 isTriggerって分かるか? 分からないならちょっと黙ってろよ Rigidbody=物理演算と思い込んでる馬鹿には理解出来ない話だから
409 名前:名前は開発中のものです。 mailto:sage [2016/05/16(月) 16:59:19.39 ID:MMYVuKCP.net] でも弾幕シューティングは座標管理すると思うよ普通
410 名前:名前は開発中のものです。 mailto:sage [2016/05/16(月) 17:00:35.49 ID:xKUVOT6G.net] 一番Unity知らないお前が言うなよ それこそチュートリアルやってUnityの基礎を調べてから出なおしてこい
411 名前:名前は開発中のものです。 mailto:sage [2016/05/16(月) 17:01:25.94 ID:xKUVOT6G.net] >>405 は>>403 宛な
412 名前:名前は開発中のものです。 mailto:sage [2016/05/16(月) 17:10:14.33 ID:WpXNRJDO.net] >他の言語なら全弾ループさせて8分木で当たり判定を行ってるんだが Unity質問スレでこんなアホな事言ってる時点でお察し おまえらスルー力無さ過ぎ
413 名前:名前は開発中のものです。 [2016/05/16(月) 17:28:57.07 ID:BdnXokXi.net] 貯金1,000万円つかって、6年で20アプリつくったが、年収は15万円。 どん底アプリ開発者、コンテストで賞金250万円を獲得し、人生初勝利をおさめる。 appmarketinglabo.net/iyodasan/
414 名前:名前は開発中のものです。 mailto:sage [2016/05/16(月) 17:50:48.90 ID:qRF1nlwK.net] >>403 実際Unityが物理エンジンをどういう形で最適化しているかはUnity社に聞くほかないが 普通に考えつくようなことは大体行われていると考えていいだろうとは思う。 実際のUnityでの衝突判定負荷がある程度察せられるチュートリアルはある https://unity3d.com/jp/learn/tutorials/modules/intermediate/physics/physics-best-practices これでは1000個の赤オブジェクト、1000個の緑オブジェクトを それぞれの色同士だけで判定させた場合とまとめて判定させた場合の パフォーマンスの結果が書かれていて前者では物理演算にかかる時間は 平均で17.6msとなっている。60fpsはでていない。後者だと平均27.7ms。 どんなCPU使ってるのかわからんがそれでもかなり最適化されているとは察せられる。 弾幕の場合は1000個の弾同士の判定などしない訳で問題視するようなレベルではないだろう。 まぁ適当に1000個でデモしてみればいい訳ではあるが。 そんなに時間もかからない。正直このレスの方が時間かかっているかもしれないw あと心配なら自前で衝突書いた方がいいっていう>>397 の指摘はそれほど的外れではないよ。 かなり力技だがUnite2016で物理挙動まで自作するなんて講演もあった まぁそこを自作することが焦点の講演ではないが。 japan.unity3d.com/unite/unite2016/files/DAY1_1700_room1_Yasuhara.pdf これはかなり面白い話なので見ておいて損はないと思う。
415 名前:名前は開発中のものです。 mailto:sage [2016/05/16(月) 17:59:21.19 ID:sGCwQia1.net] シミュレーションじゃなくてゲームなんだからさ 当たり判定とかRaycastでいいだろ 弾幕とかエフェクトでやれよ と言ってみる
416 名前:名前は開発中のものです。 mailto:sage [2016/05/16(月) 18:46:34.22 ID:DzDIFYv6.net] >>409 d 読んだ感じ座標の最適化はしていても外から絞り込める仕様にはなっていないっぽいな 1000の弾幕が張られていてもPlayer×Bullet(同座標)で毎フレーム1×10通りの判定まで落とし込むような実装は自前で書くしかないと
417 名前:名前は開発中のものです。 mailto:sage [2016/05/16(月) 18:56:59.55 ID:qRF1nlwK.net] >>411 あ〜、そうだね、基本的にUnityはソースコードまでは開示してないし 物理エンジンはかなり閉じた構造になってる。 この機能要らね〜この機能ほしい、と思っても切ったり足したりはできない。 その辺までやりたいならUE4とかの方がいいよ。 あれなら全部中身見て変更もできる。
418 名前:名前は開発中のものです。 mailto:sage [2016/05/16(月) 19:04:58.42 ID:NRL4D3Jt.net] もうそこらへんブラックボックスってことで理解することを放棄してる
419 名前:名前は開発中のものです。 mailto:sage [2016/05/16(月) 19:08:31.60 ID:sGCwQia1.net] 心配しなくても偉そうに語ってる奴もみんな机上の知識さ そもそも成功してる奴はこんなスレに来ない
420 名前:名前は開発中のものです。 [2016/05/16(月) 19:33:15.08 ID:vHjLOzcJ.net] 質問です。 EditorWindowで常に最前面に描画され続けるウィンドウを作りたくて以下のプログラム public class GUIEditorWindow : EditorWindow { [MenuItem(
421 名前:名前は開発中のものです。 [2016/05/16(月) 19:34:45.41 ID:vHjLOzcJ.net] 何故に切れた…… 質問です。 EditorWindowで常に最前面に描画され続けるウィンドウを作りたくて以下のプログラム public class GUIEditorWindow : EditorWindow { [MenuItem("Window/TestEditor")] public static void CreateEditorWindow() { var instance = CreateInstance<GUIEditorWindow>(); instance.ShowUtility(); } } を書いたのですが、GameビューやSceneビューの裏側に回り込んでしまいます。 何が問題なのでしょうか。Window8のPCを使っています。 Unity のバージョンは Virsion 5.2.1p4 です。 お願いします!
422 名前:名前は開発中のものです。 mailto:sage [2016/05/16(月) 19:50:40.14 ID:qRF1nlwK.net] >>416 何でだろう、と思って試してみたがWin10Unity5.3.4では再現しなかった。 報告まで。
423 名前:名前は開発中のものです。 mailto:sage [2016/05/16(月) 20:20:56.22 ID:gXHmphDY.net] >>396 空間分割法を使えば? あらかじめ、100エリアとかに分けておけば、 隣接しないエリア同士なら、衝突判定しなくてもいい たぶん、Unityも、そうしているのじゃ?
424 名前:名前は開発中のものです。 mailto:sage [2016/05/16(月) 20:40:48.12 ID:NRL4D3Jt.net] それってつまり4分木8分木とやってること大体一緒やん
425 名前:名前は開発中のものです。 mailto:sage [2016/05/16(月) 22:14:22.29 ID:crYLp3Kw.net] 昔ながらの当たり判定使って単純に弾側のUpdate内総当たりで比較してみた こんなテキトーでもRigidbody+SphereCollider使うより明らかに速いんだが? var Awake(){ Player player=GameObject.FindGameObjectWithTag("Player"); //弾丸生成時にプレイヤーの参照を取る } void Update(){ //弾丸の移動処理はこの辺でテキトーに if((player.transform.position-this.transform.position).sqrMagnitude<=(当たりと判定する距離の2乗)){ //当たった } } 使っていない様に見えてもRigidbodyが裏でやってる計算量はUpdateで総当たり判定するよりはるかに多いぞとw
426 名前:名前は開発中のものです。 mailto:sage [2016/05/16(月) 22:18:39.85 ID:crYLp3Kw.net] あ、ミス発見 player変数の宣言はUpdateの外でやってくれ
427 名前:名前は開発中のものです。 mailto:sage [2016/05/16(月) 22:22:38.34 ID:crYLp3Kw.net] うーむ、ミスだらけやな 誤)var Awake() 正)void Awake() そして>>421 はAwakeの外でが正しい スマホでソース入力とかするもんじゃないな、すまんw
428 名前:397 mailto:sage [2016/05/16(月) 23:02:37.03 ID:DAaItmnW.net] 皆さん返信ありがとうございます。 >>400 3か月前の参考書ですら使えない場合もあるんですか? てっきりunity5の参考書を買えばまず大丈夫だと思っていました。 チュートリアルやってみます。 それにしても、unityの起動やビルドにものすごい時間がかかるのだが、 俺のノートPCのスペックが足りないのかな。
429 名前:名前は開発中のものです。 mailto:sage [2016/05/16(月) 23:07:42.72 ID:NRL4D3Jt.net] まぁその方法だと球が1000個あった場合に計算回数がたった1000回になるだけだし 本当に総当たりしたら50万回くらいになってるし
430 名前:名前は開発中のものです。 mailto:sage [2016/05/16(月) 23:30:16.88 ID:NRL4D3Jt.net] あとRigidbodyの当たり判定はFixedUpdateの間隔で処理してるハズだけど、その方法だとUpdateの間隔でしか処理してないやん 当たり判定の検出回数減ってるやん
431 名前:名前は開発中のものです。 mailto:sage [2016/05/17(火) 00:08:50.61 ID:RFqvbH97.net] >>424 >>425 弾幕シューティングで弾同士に当たり判定を持つのか? 設計の段階でいらん枝を先に切るってのは当然やってるものだと思ったがまさか言葉通りの総当たりを想定してたのかwそりゃ論外だから設計見直せとしか Rigidbody使ってもレイヤー切って弾同士の判定はしないで比較してるからそこで差は埋まらんよ? Updateでやってる処理をFixedUpdateに移したぐらいで結果が変わる程度の差じゃないから粒度が気になるなら移せばいいよ
432 名前:名前は開発中のものです。 mailto:sage [2016/05/17(火) 00:19:47.34 ID:c7Es4G1U.net] >弾幕シューティングで弾同士に当たり判定を持つのか? いやいや別にあってもおかしくないが >>420 見ただけじゃ仮定が不明すぎてわけわかんないのに、「当然やってるものだと思った」と言われても自分テレパシーじゃないんで
433 名前:名前は開発中のものです。 mailto:sage [2016/05/17(火) 00:30:16.61 ID:Z2ucCY2C.net] うえいるせ 雌の部分みせろ
434 名前:名前は開発中のものです。 mailto:sage [2016/05/17(火) 00:33:37.46 ID:kSn04VNU.net] 俺のESP値は54万だ
435 名前:名前は開発中のものです。 mailto:sage [2016/05/17(火) 07:06:13.78 ID:30PsNdMs.net] シューティングで弾同士があたり判定を持つってどんな感じなんだろう・・・? 味方同士の弾が当たったら1発に集束されて威力合算とか 敵と味方の弾当たったら相殺とか、敵と敵の弾が当たったら別の弾種になるとか そんな感じの事をやる時に必要になってくるんだろうか・・・?
436 名前:名前は開発中のものです。 mailto:sage [2016/05/17(火) 08:57:23.39 ID:Z8urgFF3.net] 人間は壁にぶち当たる。 その時に否が応でもやらなければいけないものさ。
437 名前:名前は開発中のものです。 mailto:sage [2016/05/17(火) 11:00:14.89 ID:HRkpY7dw.net] 日本語で書かれたUnityの解説本はさあ、「なぞれば同じゲームが作れます」って言うような公式チュートリアル以下の初心者本ばっかりになったんだよな 公式チュートリアルが英語だからか、それが出来ない中学生〜専門学校生等の層をターゲットにしてるんだろう まあ、一歩進んだ本は売れない上、さらにレビューには「使い方の説明がない」等のひどい評価が書かれるというとんでもない時代になってるからね いい本を出そうって気はしないよな
438 名前:名前は開発中のものです。 mailto:sage [2016/05/17(火) 11:11:45.22 ID:16YnhEn2.net] 突然どうした、疲れてんのか ちょっと外に出て気分転換してこい
439 名前:名前は開発中のものです。 mailto:sage [2016/05/17(火) 11:57:18.27 ID:eRbYndXk.net] 初級本「クリックしたままカーソルを移動させることを『ドラッグ』と言います。この標準で付いているスクリプトファイルをキューブのところにドラッグすれば、ほら動いた!」 中級本「GameObjectをnewしてInstanceをprivateなvariableにassignしたらGetComponentからRigidbodyをAddForceもしくはvelocityで、ほら動いた!」 ぶっちゃけこの中間の本を作れなかったのだろうかと初心者の頃は思ってたよ
440 名前:名前は開発中のものです。 mailto:sage [2016/05/17(火) 12:06:48.83 ID:eRbYndXk.net] 正直なところ今でもクラスを細分化する理由とか分からないんだよなぁ 例えばプレイヤーとカメラの操作みたいな相互に作用するものは分けて書くと逆に可読性が落ちるし それぞれにスクリプト当ててそれぞれでお互いの参照を保持するのは無駄にしか思えない
441 名前:名前は開発中のものです。 mailto:sage [2016/05/17(火) 12:10:48.38 ID:unjj9Zl5.net] 2chでひとり語りを始める人は軽度のうつ病の恐れがあるってエロいお医者さんが言ってた
442 名前:名前は開発中のものです。 mailto:sage [2016/05/17(火) 12:38:06.79 ID:RJ0HcG3P.net] >>435 チームで開発するときは、ファイル分けてくれた方が問題の箇所を見つけやすいってのはあるかも
443 名前:名前は開発中のものです。 mailto:sage [2016/05/17(火) 12:40:59.06 ID:FLvMyiRD.net] >>435 雑談は雑談スレでやれよw それ自体はもっと大規模なゲーム作ってけば分かるようになるよ 最終的にはオブジェクト指向は正しいのかとかいう宗教戦争になるw
444 名前:名前は開発中のものです。 mailto:sage [2016/05/17(火) 12:52:13.06 ID:qP+ihOpu.net] お前らチームで開発なんてしてるの?
445 名前:名前は開発中のものです。 mailto:sage [2016/05/17(火) 12:54:50.07 ID:m1vuMDHT.net] >>435 のようなレスを見るとオブジェクト指向が理解できず苦労してんだなあと コボルやフォートラン時代の頭の硬化したジジイたちは気の毒
446 名前:名前は開発中のものです。 mailto:sage [2016/05/17(火) 12:58:54.84 ID:Eq74oSJq.net] 俺は434に同意するけどね 無駄なコードが多すぎる さして読みやすくなってるわけでもないのに
447 名前:名前は開発中のものです。 mailto:sage [2016/05/17(火) 13:42:07.71 ID:T9Vr550j.net] クラス同士が密結合していると、状態の組み合わせ爆発が起こる。 もし変数が10個あれば、10! これが2つのクラスで、疎結合になれば、 例えば、3! * 7! のように、状態の組み合わせ数が減る
448 名前:名前は開発中のものです。 mailto:sage [2016/05/17(火) 13:53:54.12 ID:qMLet7/6.net] openbook4.me/projects/161/sections/1023 こちらのサイトを見ながらブロック崩しを作成しているのですが 「BallScriptを作成して記述」の所をそのまんま記入したところ、コンパイルエラーが発生してしまいます。 エラーの内容は以下の通りです。 Assets/BallScript.js(9,42): BCE0144: 'UnityEngine.Component.rigidbody' is obsolete. Property rigidbody has been deprecated. Use GetComponent<Rigidbody>() instead. (UnityUpgradable) Assets/BallScript.js(9,52): BCE0019: 'velocity' is not a member of 'UnityEngine.Component'. Assets/BallScript.js(10,9): BCE0144: 'UnityEngine.Component.rigidbody' is obsolete. Property rigidbody has been deprecated. Use GetComponent<Rigidbody>() instead. (UnityUpgradable) Assets/BallScript.js(10,19): BCE0019: 'AddForce' is not a member of 'UnityEngine.Component'. ちなみに自分が入力したソースコードは以下の通りです。 #pragma strict var Speed : float = 15.0; function Start () { } function Update () { if (Input.GetButtonUp("Jump") && rigidbody.velocity == Vector3(0, 0, 0)){ rigidbody.AddForce((transform.forward + transform.right) * Speed, ForceMode.VelocityChange); } } エラーコード番号や英文をググったりしましたがわかりませんでした。どなたか教えていただけないでしょうか。
449 名前:名前は開発中のものです。 mailto:sage [2016/05/17(火) 14:01:32.32 ID:gPw3orDt.net] おぶそれーと?(読めない) って出てるでしょ エラーメッセージちゃんと読めば、これはすぐわかる
450 名前:名前は開発中のものです。 mailto:sage [2016/05/17(火) 14:10:25.54 ID:xuPMAP+N.net] >>440 一人で作る日曜DIYなのに、 「ここは木材を切る場所」 「ここは木材を削る場所」 「ここは組み立てる場所」 と工程別にライン化してたらアホかと思うがな
451 名前:名前は開発中のものです。 mailto:sage [2016/05/17(火) 14:24:13.05 ID:qMLet7/6.net] >>444 ありがとうございます。恥ずかしながら、エラーコードの英文が読めない時は翻訳を使うとわかることもあるということに質問してから気づきました。 一番上の意味はrigidbodyは廃れてしまい、使われていない。代わりにこれを使えと言っていることがなんとなくわかりましたが、具体的にどう書き換えたらいいかがわかりませんでした。 またもう一つのエラーとしてvelocityはunityコンポーネントのメンバーではありませんといったことが書いてあるのはわかりましたが、具体的にどのように直せばいいのかわかりませんでした。 どなたか教えていただけないでしょうか。 また、今後unityでスクリプトを触る上でこれからも様々な種類のエラーが出ると思うのですが これらをどのように乗り越えていけばいいのでしょうか。 スクリプトのコンパイルエラーの対処法として、自分にできることは、エラー番号、エラーメッセージをそのままググる。 翻訳で日本語に置き換えて考えてみるといった方法を試しているのですが それでもわからずここで質問することになってしまいました。 わからないことを掲示板等で極力聞かずに自分でコンパイルエラーを解決する方法としてもっとよい学習方法はあるのでしょうか。
452 名前:名前は開発中のものです。 mailto:sage [2016/05/17(火) 14:34:37.72 ID:FLvMyiRD.net] >>443 function Update () { if (Input.GetButtonUp("Jump") && GetComponent("Rigidbody").velocity == Vector3(0, 0, 0)){ GetComponent("Rigidbody").AddForce((transform.forward + transform.right) * Speed, ForceMode.VelocityChange); } UnityEngine.Component.rigidbody' is obsolete. Property rigidbody has been deprecated. Use GetComponent<Rigidbody>() instead. UnityEngine.Component.rigidbody は廃止されました。リジッドボディプロパティは非推奨です。代わりにGetComponent<Rigidbody>()を使用してください docs.unity3d.com/jp/current/ScriptReference/GameObject.GetComponent.html 'velocity' is not a member of 'UnityEngine.Component'. velocityはUnityEngine.Componentのメンバではありません 'AddForce' is not a member of 'UnityEngine.Component'. AddForceはUnityEngine.Componentのメンバではありません。 docs.unity3d.com/jp/current/ScriptReference/Rigidbody.html docs.unity3d.com/jp/current/ScriptReference/Rigidbody-velocity.html docs.unity3d.com/jp/current/ScriptReference/Rigidbody.AddForce.html この辺の意味が分からないなら延々「コピペすれば動くコードをよこせ」と言わねばならなくなる。 Unityはプログラムできることは必須でUnityだけ覚えるとかいう道は基本的にないよ。
453 名前:名前は開発中のものです。 mailto:sage [2016/05/17(火) 14:38:47.11 ID:swIfBpnI.net] つか何でわざわざ公式じゃないよくわからんサイト探してunityjavaとかで始めるんだよ せっかくまっさらなんだから公式でC#でやれよ 動画見ながらそのまま打てば確実に動くぞ、英語なんて解らなくても動画の通りやればいい unity3d.com/jp/learn/tutorials/modules/beginner/live-training-archive/creating-a-breakout-game?playlist=17219
454 名前:名前は開発中のものです。 mailto:sage [2016/05/17(火) 14:53:28.53 ID:qMLet7/6.net] >>447 >>448 ありがとうございます。 過去にunity公式のチュートリアルは英語なので、英語が聞き取れない人にはあまりお勧めできないと書かれたサイトがあったので unityチュートリアルは躊躇していたのですが、これからやってみようと思います。 つい先ほど日本語字幕への変更の方法もわかったことだし。 プログラミングができることが必須ということはC#やJavascriptの参考書は今後必要になるのかな。
455 名前:名前は開発中のものです。 mailto:sage [2016/05/17(火) 14:55:11.49 ID:FLvMyiRD.net] 色々あったけど結局もうスクリプトはC#でやるのが正解ってことだよなぁ。 エラーコードもGetComponent<T>()で出てくるんじゃC#しか考えてないってことじゃんって話になるし。 まぁC#ちゃんとやることだよ。他に道はない。 猫でもわかるの本に書いてある程度のことが全部頭に入ってればそれで十分だし
456 名前:名前は開発中のものです。 mailto:sage [2016/05/17(火) 15:29:19.21 ID:RFqvbH97.net] >>446 とりあえずUnityScript(javascriptのような別物)はあまりお勧め出来ないのでC#を使うようにするといいと思うよ Obsolateは過去のバージョンでは存在したが古く不適切な実装やより優れた同等品の追加などによってなくす方向にシフトしたものにつけられるアトリビュート 今回の場合は、バージョン4.xの頃には存在したが内部的にGetComponentを使っていたプロパティ群がまとめて廃止された経緯があるんよ GetComponentは重いから暗黙的に多用してしまう事を助長するのは良くないってのが廃止の理由 velocityやAddForce絡みのエラーはrigidbodyの取得時に明示的にキャストすれば大丈夫 ただまあ前述のobsolateにされた経緯の通り毎回GetComponentを呼ぶのはよろしくない、Awakeで一回だけGetComponentしてRigidBody型の変数にっっこんでおくのがいいと思う ついでに言えばそのクラスで特定のコンポーネントが必須ならRequireComponentアトリビュートをつけておくことをお勧めしとく まあとりあえずやる気になったみたいだしチュートリアル頑張れ
457 名前:名前は開発中のものです。 mailto:sage [2016/05/17(火) 15:58:10.94 ID:gPw3orDt.net] >>446 代わりにこれを使えの、これの公式マニュアル読むといいよ というかそれしかない
458 名前:名前は開発中のものです。 mailto:sage [2016/05/17(火) 17:43:18.14 ID:gPw3orDt.net] Unityって扱いやすいんだろうけど、 情報の錯綜っぷりとか それに輪をかけるアップデートの頻繁さとか 状況が入門者向きじゃないよね… 悪い意味で枯れてないというか。 いい点でもあるんだけど
459 名前:名前は開発中のものです。 mailto:sage [2016/05/17(火) 19:31:45.71 ID:MHr1tVrA.net] Unityについて語れるのは Unityで作品を完成させた者のみ 語るものは知らず 知るものは語らず
460 名前:名前は開発中のものです。 mailto:sage [2016/05/17(火) 19:51:35.70 ID:JSGpve5o.net] 上級者ぶる為にわざと難解な書き方してブログに載せる素人プログラマが多い印象
461 名前:名前は開発中のものです。 mailto:sage [2016/05/17(火) 20:07:07.92 ID:pGNa23Ii.net] Unity5にて… 角度の違うCubeを二つ用意して接触した状態にして、その接点に向かってSphereを落とした時、 跳ね返ったSphereの軌跡が二つに分かれるのですが、ひとつにする方法はないでしょうか? データを取ると、どちらのCubeが先に衝突判定処理を通ったか、で変わっているように見られるので、 同時に衝突した場合用の優先度があれば、可能なのでは…と考えていますが、そのようなパラメータはあるのでしょうか? もしくは、他に方法があれば、ご教示頂けると助かります…。
462 名前:名前は開発中のものです。 mailto:sage [2016/05/17(火) 20:32:05.24 ID:FLvMyiRD.net] >>456 同時の衝突はないからそうなる訳で同時に衝突した場合の、という方法はない。 すごい限定された対策だがSphereを落とすときに Physics.IgnoreCollision(sphereCollider,cube2Collider); とでもしておいてOnCollisionEnter()で Physics.IgnoreCollision(sphereCollider,cube2Collider,false); とかする。 .docs.unity3d.com/ja/current/ScriptReference/Physics.IgnoreCollision.html あと見た目は二つのCubeが同じように配されているがコライダーは見た目とずれていて どちらかが上になっている、とかかな。 これはSphereの落ちる速度によっては意味ないかもしれない。
463 名前:455 mailto:sage [2016/05/17(火) 20:56:39.07 ID:pGNa23Ii.net] >>457 回答ありがとうございます。 >同時の衝突はないからそうなる訳で同時に衝突した場合の、という方法はない。 確かに同時に衝突という書き方は誤認される書き方でした。すいません。 パラメータとしてはないようなので、他の方法を考えてみます。 >限定的された対策 この方法も一つの案として、参考にさせて頂きます。 ありがとうございました。
464 名前:名前は開発中のものです。 mailto:sage [2016/05/17(火) 23:23:59.89 ID:kSn04VNU.net] 全然別の物体に切り替えるか速度を望みの動作に強制設定とか?
465 名前:名前は開発中のものです。 mailto:sage [2016/05/18(水) 01:49:51.51 ID:IxPQ81Oz.net] 何言ってるか分からないけど親子関係を 動的に作ればいいとか適当なこと言ってみる
466 名前:名前は開発中のものです。 [2016/05/18(水) 10:45:50.23 ID:/bN/mExs.net] すまぬがプログラム板のC#スレで反応がなかったんで教えて欲しいだけどさあ iOSでLINQを使った際、使えない機能一覧ってどっかにまとまってないかな?
467 名前:名前は開発中のものです。 mailto:sage [2016/05/18(水) 16:02:45.09 ID:uzG6k9QN.net] >>461 qiita.com/RyotaMurohoshi/items/6fb02e50d9e08b487f47 この辺 iOS csharp LINQ でググればいくらでもでてくる、ここで大事なのはC#だと当たりを引けないcsharpって書くのが大事。