【3Dゲームエンジン】Unity質問スレッド26 [無断転載禁止]c5ch.net [無断転載禁止]©5ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2016/08/06(土) 10:54:54.50ID:D8D0bsd/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総合スレッド28 [転載禁止](c)2ch.net
http://echo.2ch.net/test/read.cgi/gamedev/1454596460/l50
■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質問スレッド25
http://echo.2ch.net/test/read.cgi/gamedev/1465721773/
0047名前は開発中のものです。
2016/08/17(水) 08:48:01.83ID:dVTW0RQ3いや公式にローグライクのチュートリアルあるだろ…英語だけど
http://unity3d.com/jp/learn/tutorials/projects/2d-roguelike-tutorial
0048名前は開発中のものです。
2016/08/17(水) 08:54:42.84ID:dVTW0RQ3https://www.assetstore.unity3d.com/en/?_ga=1.50501546.2057763542.1460350084#!/content/29825
をダウンロードしてきてその素材を入れ替えたりするだけでも
ある程度独自のゲームになる。
システムまで独自のモノを作りたいっていうのは
そのチュートリアルの中にあるプログラムくらいは
ちゃんと理解できるようにならなきゃ無理だ
Unityは見た目に反してちゃんとプログラムできないと
どうにもならないからホントにやりたいなら
C#は一から真面目にやった方がいいよ。
0049名前は開発中のものです。
2016/08/17(水) 12:24:04.84ID:mcVSZUZ5とても詳しく、ありがとうございます。
公式のローグライクは目を通したんですが、
言葉足らずですみません、ドラクエのような、エンカウントして戦闘シーンに入るようなテンプレ的RPGを作りたいと思っています。
おっしゃるように独自のシステムを導入するのは敷居が高いと考えていて、チュートリアルなどに沿って、システムはそのままにビジュアルを入れ替えるやり方をとろうと思います。
なので、上で述べたような古風なRPGの仕組みがつくれるものを探しています。
長々すみません。よろしければご回答お願いします。
0050名前は開発中のものです。
2016/08/17(水) 13:07:42.41ID:OMiP2njeマップチップを敷いてそれぞれにイベントを付けて、
キャラクターを配置してコントローラーとアニメーションを付けて、
移動した先にあるマップチップのイベントを実行してエンカウントしたなら戦闘シーンに切り替える
そんな感じで一つずつやりたいことを実装して行けば思ったより敷居は高くないよ
C#に初めて触れた俺でも上の動作だけなら一週間掛からなかったし
0051名前は開発中のものです。
2016/08/17(水) 13:44:55.79ID:xtRVLQJ4プログラム自体が初めてだと結構きついと思う。
>>49
ドラクエ型の2Dゲームのアセットは探せばあるかもしれない(そのてのアセットはソースコード付いてる)
海外圏だとRPGはドラクエみたいな2Dマップ移動で戦闘を別シーンってのは凄くマイナー。
0052名前は開発中のものです。
2016/08/17(水) 14:00:06.78ID:dVTW0RQ3読めない人間には読めない訳でツクール買うのが一番早いと思うなぁ。
Unityでツクールでできる以上のRPG作るってかなり至難の業だと思うよ。
0053名前は開発中のものです。
2016/08/17(水) 14:02:59.97ID:arOENRJS0054名前は開発中のものです。
2016/08/17(水) 14:29:55.79ID:01B/ASfiあとはプレイヤーをぐいぐい引き込む愉快なシナリオを書くだけ
0055名前は開発中のものです。
2016/08/17(水) 15:12:09.86ID:iflHNXl6プログラミングに比べて難易度に雲泥の差があるぞおいw
0056名前は開発中のものです。
2016/08/17(水) 15:19:37.68ID:0UrN0mAV勉強すればたいていの奴は意味を理解できて変更することまでは出来るんだけど
自分の望む動作をするプログラムを書けるレベルまでになると途端に少なくなる
底辺プログラマーとか言いながらも介護底辺に比べりゃ倍以上の年収差あるし一応才能なんだから自慢していい
0057名前は開発中のものです。
2016/08/17(水) 21:10:20.75ID:BuJiARW60058名前は開発中のものです。
2016/08/17(水) 21:46:50.94ID:dj2hcyLtよく仕事として継続できたものだ、ゆとりのある職場だったんだなあ
0059名前は開発中のものです。
2016/08/18(木) 00:09:02.13ID:a2KvP8wo最近のエロゲのシステムって、結構と多機能なのな
0060名前は開発中のものです。
2016/08/18(木) 00:19:24.99ID:zAtsAnoEコアとなるライブラリの類を使えばいけるな。
ただ読み込みやら何やらまで1から作るとなると1人月では無理。
0061名前は開発中のものです。
2016/08/18(木) 03:33:03.98ID:EHkzLZ+Dたぶんソースとしては100kb超えるかどうかってところ
仕様が固まってれば慣れてる奴なら数日でモック上げて来るレベルだな
0062名前は開発中のものです。
2016/08/18(木) 07:48:11.36ID:zLczGt6V0063名前は開発中のものです。
2016/08/18(木) 10:59:24.31ID:tY/o8/tUマジかJavascriptすげーな。
スクリプトコンパイラやファイルのパッキングツール、エフェクト関連のシステムとかも全部作ったからC++&DirectXで数日では無理だったわ。
0064名前は開発中のものです。
2016/08/18(木) 13:09:50.92ID:a2KvP8wo0065名前は開発中のものです。
2016/08/18(木) 13:18:59.76ID:2/nrmEvjお前のがスゲーよ
エフェクトがらみをC++&DirectXで作るとか、マジゲームプログラマーじゃん
そんな奴が、わざわざUnity使うことも無かろうにw
ゲームプログラマーは、他の業種のプログラマーより能力高いのは確か
0066名前は開発中のものです。
2016/08/18(木) 13:36:21.50ID:teq4h2ez0067名前は開発中のものです。
2016/08/18(木) 17:04:25.12ID:Jg4NmsH40068名前は開発中のものです。
2016/08/18(木) 19:38:53.05ID:EkYF26JRほとんどのゲーム関係者はプログラミングとは関係ないとこで仕事してる
0069名前は開発中のものです。
2016/08/18(木) 20:25:45.32ID:ykSiB8IJああいう人達が何かゲームを完成させたという話をあまり聞かない
0070名前は開発中のものです。
2016/08/18(木) 20:35:44.29ID:5n3D0lf10071名前は開発中のものです。
2016/08/18(木) 21:31:28.29ID:a2KvP8woUnityなら同人ゲームとか作ってれば別だろうけど
0072名前は開発中のものです。
2016/08/18(木) 21:34:39.09ID:pW4GFcrv腕があるなら引っ張りだこだろうし
0073名前は開発中のものです。
2016/08/18(木) 21:45:01.08ID:mgBlCt7nそりゃあ畑が違うからね。
プログラマはソースを読み書きできるのであって、ゲームデザインできるわけじゃないよ。内部のロジックは作れるけど、ゲームの「画作り」とかレベルデザインはまた別の才能が必要だと思う
0074名前は開発中のものです。
2016/08/19(金) 01:41:09.99ID:6ZlOkFXp背景が真っ黒なキャラクター画像を使いたかったのですが・・・
0075名前は開発中のものです。
2016/08/19(金) 02:59:18.74ID:/EjNTis4パンがなければケーキを食べればいいじゃない
レタッチソフト使えないならシェーダ評価すればいいじゃない
0076名前は開発中のものです。
2016/08/19(金) 08:11:59.03ID:6ZlOkFXpすまん、くわしく
0077名前は開発中のものです。
2016/08/19(金) 08:37:39.96ID:057SvZePこういう話
http://wiki.unity3d.com/index.php/Transparent_Single_Color_Shader
0078名前は開発中のものです。
2016/08/19(金) 13:05:13.62ID:MfZolbIM>シェーダ評価すればいいじゃない
プログラマーぽい言い方w
憧れるww
0079名前は開発中のものです。
2016/08/19(金) 20:48:26.53ID:El7UuHQ0prefabutility.replacePrefab()で値を保存しようとしてもエディタ上でしか動きません。
単純に生成したデータを取り出しやすい形でシリアライズしたいだけなのですが、別に良い方法は有りますでしょうか。
playerprefsに入れるのはなんか違うし……
0080名前は開発中のものです。
2016/08/20(土) 09:17:20.49ID:G6/l+4JGUnityのGameObjectとかのクラスを含んでいないなら普通にシリアライズして書き込み可能なPathに突っ込めば良いのだけど。(XMLでもJSONでも、実験以外オススメはしないけどPlayerPrefsに文字列として突っ込んでも良いし)
含んでいると実行時はちとムリじゃないかな?(Prefabの書き換えはEditor用だし)
0081名前は開発中のものです。
2016/08/20(土) 10:40:36.50ID:59ryz1Y8それはゲーム業界では一般的にセーブ機能と呼ばれるものだよ…
ttp://magnaga.com/unity/2016/01/11/unity-save/
0082名前は開発中のものです。
2016/08/20(土) 11:12:38.40ID:Lc7rc6VO外部ファイルに保存するよりずっと手軽だよ
0083名前は開発中のものです。
2016/08/20(土) 13:29:13.76ID:SUxNn72f最近のアプリはオフラインで時計いじっても変えられないよね
0084名前は開発中のものです。
2016/08/20(土) 14:38:41.15ID:ZZLoYJLd察するに時計変更系の不正対策かな
単にゲーム中時間を計測するならdeltaTimeでも加算して永続化しとけばいいと思うけど、ゲームしてない時の時間を裏取るならオンラインでNTPサーバでも参照するしかないんじゃない
0085名前は開発中のものです。
2016/08/20(土) 15:23:43.95ID:yunjYFxQ時計進めなかったらクリアまでリアルで数百年掛かるアプリとか平気であるからな
0086名前は開発中のものです。
2016/08/20(土) 19:00:11.82ID:QRMw57ry0087名前は開発中のものです。
2016/08/20(土) 21:05:06.49ID:l+d3uJAWクッキークリッカー系のアプリに終焉を求める方がどうかしてるけどなw
0088名前は開発中のものです。
2016/08/21(日) 22:36:17.83ID:LLQDZSWgまだUnityに対応してないんでしょうか?
0089名前は開発中のものです。
2016/08/21(日) 22:49:08.97ID:ju/x4vEGunityでexcelのような表を表示させて、データをいじれるようにしたいのですが、GUI並べて、それっぽいものを作るしかないでしょうか?
それとも、excelみたいなGUIはあるのでしょうか?
0090名前は開発中のものです。
2016/08/21(日) 22:56:40.80ID:ahGGETms作り付けの表計算機能はない。
だから「GUI並べて、それっぽいものを作るしかない」ね
0091名前は開発中のものです。
2016/08/21(日) 23:59:36.50ID:9ZwIxvTHありがとうございます
やってみます
0092名前は開発中のものです。
2016/08/22(月) 20:02:22.42ID:YEl/jjEb0093名前は開発中のものです。
2016/08/22(月) 20:23:54.38ID:7Sz325Im0094名前は開発中のものです。
2016/08/22(月) 22:02:49.64ID:s9Czu+9v5.4になって変わったのか?
0095名前は開発中のものです。
2016/08/22(月) 22:49:40.81ID:FlKvhPf40096名前は開発中のものです。
2016/08/23(火) 09:27:08.38ID:rq7/gI1uもちろん同じフォルダ内に置いて
0097名前は開発中のものです。
2016/08/23(火) 10:12:55.75ID:aTSn8auEもちろんアセットにしてエキスポート、インポートしても動く
新しいバージョンから古いバージョンへは基本動かない
0098名前は開発中のものです。
2016/08/23(火) 10:30:08.16ID:KzCtSrx90099名前は開発中のものです。
2016/08/23(火) 11:30:43.03ID:VUOsRbsDデフォルトの MainCamera と Canvas の領域がまったく異なるのはどうしてですか?
Camera の範囲を Canvas にあわせているのですが、正しいでしょうか?
0100名前は開発中のものです。
2016/08/23(火) 11:41:09.94ID:yDD6X/jqCanvasは同じスペース上にあるけど描画の仕組みは
他のオブジェクトと根本的に違う。
カメラを合わせる必要はない。
インスペクター上でRenderModeをScreenSpace-Cameraにして
カメラを指定してやれば自動でカメラにあうようになる。
0101名前は開発中のものです。
2016/08/23(火) 12:20:51.53ID:bTRjFqhUシーンビューに置く必然性が無いんだから別窓に分ければ良いのに
0102名前は開発中のものです。
2016/08/23(火) 13:08:05.08ID:VUOsRbsDScreenSpace-Cameraが便利そうなのでこれでやってみます。
ありがとうございました。
0103名前は開発中のものです。
2016/08/23(火) 13:38:49.19ID:JkGv7l3C敵の同期をする時、プレイヤーと同じように位置とアニメーションを同期すると
通信負荷が限界に達するようで切断してしまいます。
ダメージ処理も含めて敵の同期はクライアントで行うべきという記事を読んだのですが
ランダム系のAIステートを同期するためにはどうすべきでしょうか?
どうしてもマスタークライアントで処理したものを全員に送る形しか思いつかないのですが…
0104名前は開発中のものです。
2016/08/23(火) 16:13:30.25ID:Vwkbt73+セッションを作成するときに共通の乱数のシードを設定して、各クライアントはそれで初期化すればよろし。さすれば自然とランダム系の動きも同期するで。
(組み方にもよるけど)
0105名前は開発中のものです。
2016/08/23(火) 17:51:30.39ID:JkGv7l3Cシードを知りませんでした…、ありがとうございます。
あらかじめRandom.Seedで値を設定しておけばRandom.Rangeで求めた数値を
Seed値に合わせ全てのクライアントで同じ結果にできるのですね。
0106名前は開発中のものです。
2016/08/23(火) 18:12:23.61ID:ZYrHvchU通常はそれじゃ困るので時刻をシードにしたりしてるが
同じデータを再現したいとき等はあえて数字を固定するね
0107名前は開発中のものです。
2016/08/23(火) 19:06:02.52ID:DD/wzxta104と別解だとステートの変更をマスターからスレーブへ通知するってやり方もあるよ
0108名前は開発中のものです。
2016/08/23(火) 22:23:03.50ID:twPCWgkXUnityは大丈夫だったと思うけど、
たまに、そのマシンあるいは同じOSでしか再現してくれないのがあるよな
0109名前は開発中のものです。
2016/08/23(火) 23:32:55.03ID:8PzqXbjGUnityのAssetStoreにもあるし。
0110名前は開発中のものです。
2016/08/24(水) 11:37:53.38ID:9ebosI1vOnMouseDown イベントで IsPointerOverGameObject() が true ならば無視するようにしました。
これで、ボタンなどが手前にある場合は成功しました。
しかし、 uGUI Image が背後にある Sprite でも IsPointerOverGameObject() が true になってしまいます。
見た目上は Sprite が手前にあるので、そちらだけ反応させたいのですが
前後関係を含めた当たり判定はありますか?
0111名前は開発中のものです。
2016/08/24(水) 12:09:20.98ID:xr1E26+3レトロゲームの「クイックス」のように
囲まれた範囲を領地化するために
範囲を取得したいのですが、
案が浮かびません。
何か方法はありますでしょうか?
0112名前は開発中のものです。
2016/08/24(水) 18:39:39.29ID:xoHq8QPDゲームの内容に寄る
領地がConvexポリゴンで表せるかとか、ちなみにQIXのは矩形リージョンの集合に分割することで領域を区別してた
0113名前は開発中のものです。
2016/08/24(水) 19:48:18.11ID:wzwl+oL+他にも何かデメリットはありますか?
0114名前は開発中のものです。
2016/08/25(木) 00:03:13.61ID:DgLaV+Btenemy.AddComponent(
0115名前は開発中のものです。
2016/08/25(木) 00:06:50.32ID:DgLaV+Btenemy.AddComponent("Halo")
でHaloのコーンポネントをスクリプト上で作ったCubeに追加したいんですが。
上記コード(参考にしてる本が古い)が最新でないらしく。
UnityEngineInternal.APIUpdaterRuntimeServices.AddComponent(enemy, "Assets/spaceship.js(82,9)", "Halo")
に変換されて、Haloを追加できていないままになります。
これはスクリプト上で解決できますか?
0116名前は開発中のものです。
2016/08/25(木) 00:17:31.21ID:wn30Advxなんか言ってることが曖昧というか
質問に適切な情報がない気がする
Haloがコンポーネントならこれじゃないの
http://qiita.com/junya/items/e462163cb4c170918e76
gameobjectならgetcomponent
0117名前は開発中のものです。
2016/08/25(木) 00:47:36.56ID:DgLaV+BtでCubeを新規に作って、それにHaloのコンポーネントを追加したいのです。
>>116のように
enemy.AddComponent.<"Halo">()
enemy.AddComponent.<Halo>()
でもダメだったので…。
0118名前は開発中のものです。
2016/08/25(木) 00:55:14.47ID:QLIUawhGこの状態になったのですが普通の状態の左下右にあったバーを表示させて、
もとのUIに戻したいです。どうすればよいでしょうか?
http://imgur.com/qvHMF2J.jpg
0119名前は開発中のものです。
2016/08/25(木) 00:59:50.05ID:QLIUawhG0120名前は開発中のものです。
2016/08/25(木) 01:21:55.31ID:wn30Advxhttp://www.cho-design-lab.com/2013/08/18/unity-reference-other-script/
MonoBehaviour継承してないとか?
0121名前は開発中のものです。
2016/08/25(木) 02:35:35.69ID:/Ws0o294そこ、できるなら無視して消してしまった方がいい。
実はHaloコンポーネントの扱いはどういうことになっているのかよくわからない。
リファンレスにも載っていないしC#でもAddComponentできないし
通常のやり方でGetComponentもできない。
なぜこのようなオブジェクトになっているのか謎。
0122名前は開発中のものです。
2016/08/25(木) 02:53:23.67ID:DgLaV+Bt>>121
回答ありがとうございます。
なるほど、Haloコンポーネントだけおかしいのですか。
無視してHalo無しで先に進んでみます。
0123名前は開発中のものです。
2016/08/25(木) 04:04:43.41ID:uIbWNalU囲み方等のルールは
クイックスと同じ想定ですが、
領地に表示させるものの都合もあり
フィールドは粗めのマスで区切る予定です。
領地情報を変数配列に保存するつもりではありましたが、
実装できるのであれば
他の手段でも構わないです。
0124名前は開発中のものです。
2016/08/25(木) 16:42:42.05ID:83VqBRCcLeft, Top, Right, Bottom を 0 にして
Min X,Y Max X,Y の設定だけを使い、ウィンドウサイズの違いに対応したいと思っています。
しかし、 Min X,Y Max X,Y の設定は面倒な上、
GUI をマウスで移動させて調整したいのに Left, Top, Right, Bottom が変更されてしまいます。
マウスでの GUI の編集の結果を Min X,Y Max X,Y だけに反映させる方法はありますか?
0125名前は開発中のものです。
2016/08/25(木) 23:03:29.78ID:u1xY0SXd0126名前は開発中のものです。
2016/08/26(金) 00:47:58.60ID:Ve5Y7ZDo領地の概念が何処にあるかってのが結構重要、123が言うマス目単位でよければ囲った領域を2D矩形の集合に変換してからマス目の重心が分割した矩形に入るかどうかを普通に2Dの当たり判定で行えば良い
領地が空間を区切る様に3D空間内に存在するのであればBSP(Binary Space Partitioning)による超平面分割で領域判定をするのだけど、この場合領地の取り合いでBSPの論理演算(切り取りとか付け足し)をしないと行けない
なので本当にゲームに依存する。
特に前出のQIXの場合は領地は一度取得したら変更が起きないし領地の取得面積の算出だけなので8Bitマシンでも作れたんだぜよ。
0127名前は開発中のものです。
2016/08/26(金) 00:51:13.86ID:Ve5Y7ZDo補足
囲った領地を3角形ポリゴン(あるいは矩形)の集合にして領地のマス目の重心座標がポリゴン(あるいは矩形の)の内側にあるか判定し、入っていたらマス目に誰の領地かフラグつけるって意味ね
0128名前は開発中のものです。
2016/08/26(金) 10:28:04.76ID:oDcylQEXRectTransformは各プロパティが勝手に連動するんだっけ
Left他を毎回0で上書きしてみたら?
0129名前は開発中のものです。
2016/08/26(金) 11:48:43.44ID:nqvhB+270にしてもなぜか1.1くらい強制的に値が再設定されたりすることもあり
まだよくわからないのですが、
今は L, B, R, T は 0 に上書きしてから max/min を設定して調整しています。
0130名前は開発中のものです。
2016/08/26(金) 13:06:34.38ID:ooIqDkZ9場所固定の親オブジェクト作って、
アンカーを上基準にしてみるとか
0131名前は開発中のものです。
2016/08/26(金) 15:26:29.66ID:gJpqV1j9詳しい回答ありがとうございます。
囲った部分の集合体を作るという所が
まだ方法を想像出来てませんが、
色々調べながらやってみます。
0132名前は開発中のものです。
2016/08/27(土) 07:49:36.25ID:7xLav6Boリジッドボディのmassは大きければ重く、他のmassが小さいオブジェクトがぶつかった時に余り動かないモノかと思ったのですが、実際に数値を入れてみると1でも1000でも違わない動作し みたいなんですが、認識間違ってますか?
衝突時、重いものはあまり動かず軽い方は跳ね飛ばされるのはスクリプトでマメにするしかないですか?
0133名前は開発中のものです。
2016/08/27(土) 12:32:31.82ID:ndq4XMCo試してみるとmass1と10の動きはやっぱり全然違うので
何かを勘違いしているのだろう。
0134名前は開発中のものです。
2016/08/27(土) 13:41:17.84ID:a/bQ85qY今度アイモバからadmobにきりかえようと設定をしたところうまく広告が表示されませんでした。
試行錯誤したところコードやプラグインの問題ではなくbundle identifierをかえたら解決しました。
アドモブかunity側の問題か不明ですが同じ用な現象が起きた方いらっしゃいますか?
0135名前は開発中のものです。
2016/08/27(土) 15:14:44.15ID:S8c/2UBo物理演算で変化するのはrigidbodyの値だけだから、
transformで動かしてると物理挙動は効かないと思う
0136名前は開発中のものです。
2016/08/27(土) 19:37:45.17ID:tQuxWCnP見づらいですが、こちらが元のタイルを一般的な画像ビューアで拡大させたものです
ちゃんとドットの大きさがそろっています
http://i.imgur.com/tJw22uP.png
しかし、unityで表示させるとこのようにドットの大きさがめちゃくちゃになります
http://i.imgur.com/y0fkdWc.png
FormatはTruecolorですし、Filter ModeはPoint(No filter)にしています
どうしたらいいんでしょうか?
0137名前は開発中のものです。
2016/08/27(土) 19:53:49.97ID:gJhSoj/Ghttps://blogs.unity3d.com/jp/2015/06/19/pixel-perfect-2d/
0138名前は開発中のものです。
2016/08/27(土) 19:54:17.38ID:7xLav6Boご回答ありがとうございます。
そうなんですか、私の方で数値変えてみてやったのですが変わらなかったので…
飛行機と弾で、それぞれ100000と0.0001とか極端な値をそれぞれに入れて、やってみたのですが変わったように見えなかったので。
そもそも勘違い?どこだろう?
0139名前は開発中のものです。
2016/08/27(土) 19:56:23.93ID:7xLav6Boご回答ありがとうございます。
はい、トランスフォームで動かしています。これでは反映されない?反映される方法はございますか?
0140名前は開発中のものです。
2016/08/27(土) 21:40:30.66ID:ndq4XMCotransform.positionに固定した値を入れれば位置は必ずその位置になる。
もしそういう形で位置を移動させているならRigidbodyの動作は無意味になる。
Rigidbodyというのは何か、というと物理エンジンに従って
transformの位置や回転の値を書き直すものだ。
そうやって物理的な挙動を再現している。
Rigidbodyが勝手にtransformの位置や回転を毎フレーム書き直しているから
自動で動いている、ように見えるってことだ。
しかしスクリプトで固定の位置を書き込んでしまえばRigidbodyの書き換えが
上書きされてしまって無意味になる。
とまぁそういうパターンはあり得る。
動かすときに例えば
void Update(){
transform.Translate(Vector3.forward*Time.deltatime);
}
というような書き方をしてやればRigidbodyの計算結果を反映したうえで
動かしてくれるようにはなる、はずではある
0141名前は開発中のものです。
2016/08/27(土) 22:51:58.08ID:tQuxWCnPありがとうございます
0142名前は開発中のものです。
2016/08/27(土) 23:42:05.66ID:2W6/iIAR>>138
物理挙動をしている(=RigidbodyがアクティブでisKinematicがfalseの)オブジェクトの位置操作はAddForce系のメソッドを使う、これ鉄則
0143名前は開発中のものです。
2016/08/28(日) 00:12:50.39ID:554Md0BG1. FixedUpdate(物理処理)
2. OnCollision(衝突処理)
3. Update(イベント処理)
4. 描画処理
Unityは毎フレームこんな流れで動いてて、
物理的な計算は「FixedUpdate」で行われるから、
その後にある「Update」でtransformを弄ると描画に物理挙動が乗らない
物理計算された値をUpdate内で上書きする形になるから描画まで持って行けないんだね
だから物理的な挙動をさせたければFixedUpdate内にtransformの処理を書くか、
Rigidbody.positionのような次のフレームの物理フェイズで遅延実行される方法を使うべき
0144名前は開発中のものです。
2016/08/28(日) 04:25:12.65ID:OAHf0gRxUpdate()でTranslate()をデルタタイムで使えばRigidbodyの物理挙動+
Translate()の移動が行われる。
問題なのはTranslate()での移動ではRigidbodyのVelocityは変わらなくて
だからTranslate()で衝突しても速度0の状態での衝突扱いになる。
あと速度自体への影響はでないけどFixedUpate()で
RigidbodyのMovePosition()を使ってやると衝突補間に便利な場合がある。
そこまでは必要ない場合でもtransformでの操作より
Rigidbody.positionを使う方が計算が一部省略されて
動作が多少なりとも軽くなる場合がある(複数のColliderを付けてる場合など)
Rigidbodyを使っている場合AddForceで操作できれば物理的挙動としては
それが一番整合的になるのは確かなんだが実際には
それでゲーム的操作を行うのは難しい、場合がある。
だからRigidbody.MovePosition()みたいな関数も用意されてる訳で。
>>138の話は多分transform.positionに直接値を放り込んでるからで
それだとRigidbodyが行う全ての操作が上書きされるからRigidbodyの動作は
全く反映されない、ということなのではないかな、と推察されるわけだ
0145名前は開発中のものです。
2016/08/28(日) 09:41:01.55ID:oOAtXjvYビルボード開始距離を大きくすれば一応解決するけど重いので、それ以外の方法で。
検索しても見つけられなかったので助けて。
0146名前は開発中のものです。
2016/08/28(日) 11:19:44.80ID:554Md0BGカメラの視野角と物体の距離から三角関数で実際の位置と仮の位置の辺の長さを取り、
その二つを比べた倍率でtransformを操作すれば可能だと思う
要はカメラに追従するようにビルボードを動かすだけ
たぶんRotateAroundが便利に使える
■ このスレッドは過去ログ倉庫に格納されています