【3Dゲームエンジン】 ..
[2ch|▼Menu]
99:名前は開発中のものです。
17/12/26 08:50:28.37 e7BUlWI3.net
>>98
マジレスすると、UI的には>>87の@が正解な
FindやGetComponentは重いから出来るだけ呼び出す回数を少なくするべきだし、必要でないところで使うのは好ましくない
今回のケースで必要だとすればスクリプトから動的にイベントハンドラを設定する場合ぐらいだろう
汎用的でどこからでも呼べるから多用するってのはstaticおじさんと同じ思想だからやめとけ

100:名前は開発中のものです。
17/12/26 10:01:11.29 /Bbw4vw9.net
UI的に正解w
そんな意味不明なアドバイスでこの程度のパフォーマンスを気にするの?
forはi--で処理したほうが良いとか言ってそう…

101:名前は開発中のものです。
17/12/26 10:03:25.43 /Bbw4vw9.net
>>98
ここで聞くほうが圧倒的に効率悪いぞ?
getcomponentはUIに限らずUnity全体の基本

102:名前は開発中のものです。
17/12/26 12:45:52.42 hFK9SmSE.net
74です
>>75-76
どうもです
確認してみたら、右上にでっかいキャンバスありました
シーンビューの範囲からはみ出ていたようです
UIは解像度に合わせてピクセル単位で入力していたので、
100ピクセルの位置が、100Unitになっていました
要は、スケールが違うから、カメラの撮影範囲外にいたんですね
他の3Dオブジェクトは-10〜+10Unit単位で配置されていたので
UIと他のオブジェクトで、配置する座標基準が違うんだったら、
シーンビューはUIと他のオブジェクトで分かれていたほうが操作しやすい気がする
どちみちゲームビューじゃないと合成されて表示されないなら

103:名前は開発中のものです。
17/12/26 12:51:31.00 hFK9SmSE.net
もう1つ質問です
uGUIのButtonは、各々をマウスで押すのが普通だと思うんですが、
カーソルで複数から選択して、Enterで押す機能は、
デフォルトの機能で用意されていますか??
インスペクターのNavicationでVerticalを選んでから、
Visualizeすると、各ボタンを結ぶ動線の矢印が表示されるから、
キー操作でのフォーカス移動できそうに見えるんですが、
テストプレイしても、キー操作を受け付けません

104:名前は開発中のものです。
17/12/26 16:38:15.98 yq5adPSI.net
>>98
頭おかしいんとちゃうか?
ここで質問する方が遥かに効率悪いぞ?馬鹿なの?死ねよ
例えば>>102-103の内容なんて質問して5時間経過した今も返答はついていないが
ググれば5分〜10分でわかるわけだ
20分もあれば1つの方法以外にも沢山方法あることも知れて全部自分の物にできるわけだが?
スライダーやトグルの説明もクソ沢山あるしな
ねえ?馬鹿なの?
ググり方が下手過ぎてANDやOR検索できない子なの?
死ねよ

105:名前は開発中のものです。
17/12/26 16:42:11.91 94NCEA31.net
>>98
効率を求めて宿題丸写し繰り返してりゃ、学力は全くつかないのと同じ
だから周りの人間が普通についてこれるレベルにすらついてこれない
>>99
ValueChangeは自動でリスナーの設定してるだけだった筈
確か、リスナー設定のタイミングが指定出来ない


106:からScriptableObjectから 設定ロードしたりすると詰む だから、StartかAwakeでGetComponentして、自分でリスナーセットするか メンバにアクセスする方が汎用性が高いし都合がいいんだよ



107:名前は開発中のものです。
17/12/26 16:44:18.50 yq5adPSI.net
>>98
あと自作してるのに効率って何?
手本や人から教わらないと自作できないの?
それって自作というより盗作や真似じゃねーの?
コピーや真似してるだけなのに自作だと思い込んでるの?
自作は試行錯誤の連続
お前が今どんな物作ってるのか知らないが
見た目が綺麗なユニティちゃんがグリグリ画面走ってる物作っていても
インベーダーゲームやマリオ1やブロック崩しやテトリスを最初に作った連中より劣ってるよ
彼らは作り方を誰にも教わらずに自分でやり方に気づき形にした人達だからな
プログラムが置いてあって弄っていたら、あれ?これこうしたらゲームみたいの作れるんじゃね?
と自分で試して誰にも聞かず参考本なんてものも見ないで作ってるからな
そしてそれが本当のゲーム作りだ
わかったか!盗作やろうの勘違いやろう!
おめえみたいのはアセット組み合わせてやってろや!

108:名前は開発中のものです。
17/12/26 16:49:30.04 /Bbw4vw9.net
>>102
スケールが違うから撮影範囲外に居るってのは違う
canvasはUIに特化するためにそういう仕組みになってる
3D空間上に居たら最前面に表示すべきUIとモデルの前後関係を注意しなければならなくなる
ゲームによってはカメラが移動しまくるからそれに合わせてUIの座標を追従させるとか馬鹿らしいだろ?
だからオーバーレイ表示する仕組みになってる
ただUIが3D空間上にいてほしいこともある
キャラクタのHPバーをそのキャラの頭上に表示させるとかね
そういうタイプのcanvasも設定できる
名称は忘れた、カメラオーバーレイと対になってるやつ

109:名前は開発中のものです。
17/12/26 16:52:15.90 sS7DQh8C.net
アセットを買えばいいのにね

110:名前は開発中のものです。
17/12/26 16:54:39.83 /Bbw4vw9.net
スライダーの件は1も2も3も別にどれも間違いでもない
実現したいことが実装できたならまぁそれでいい
ただ今後ちょっと仕様が異なるものが必要になったとき1つの手法しか知らなければまた質問する羽目になる
だから色んな手法を知ることは大事だしUI的に1が正解なんて結論には絶対にならない
スクリプトからスライダー生成する必要が出てきたらUI的に不正解な手法を取らなければならないとかエンジンとしてどうなんだって話

111:名前は開発中のものです。
17/12/26 17:41:22.57 Rpuwe1xT.net
>>98
馬鹿だなぁ
公式がチュートリアルやサンプルで説明済みだから、ネットで2番煎じのネタは
基本的な部分が重複しないんだよ無能

112:名前は開発中のものです。
17/12/26 18:26:54.92 /Bbw4vw9.net
そもそもボタンの記事があるならスライダーの記事なんて無くてもマニュアル見れば後は大体分かると思うけどね
パーツ全部個別に説明が必要な設計ってオブジェクト指向とはなんだったのかってなるし
canvasは公式に説明あるし結構深く解説してるところもいっぱいある
というかスライダーの記事だって山ほどあるでしょ
コレで少ないって言うなら何も作れる気がしないわ

113:名前は開発中のものです。
17/12/26 18:36:04.71 hFK9SmSE.net
>>107
なるほど!
UIは他のオブジェクトと違ってゲーム空間に置いているというよりも、
キャンバスごとカメラのレンズ前に貼り付けている感じですね
EventSystemで、EventSystem(Script)というコンポーネントのFirstSelectedを指定してあげたら、
カーソルで他のボタンへ移動したり、Enterで押せるようになりました!
最初の状態では、UIにフォーカスが降りてないからキー入力に反応しないみたい

114:名前は開発中のものです。
17/12/26 18:39:08.06 hFK9SmSE.net
NavigationのExplicitを選んでみたら、
カーソルを押した時に、次にどのUIへ行くかを、上下左右ごとに指定できると知って驚愕!
便利ですね〜
UI関連が話題になっていて勉強になります!

115:名前は開発中のものです。
17/12/26 18:42:20.71 Rpuwe1xT.net
どう見てもキムチ

116:名前は開発中のものです。
17/12/26 19:19:33.08 yq5adPSI.net
公式どころか個人がやってる初心者講座サイトの1つでもやってれば普通に分かっていておかしくない内容だよな。
どんだけ何もやってない怠けものだよコイツって感じ

117:名無し@キムチ
17/12/26 19:58:50.02 5fo0vrRf.net
ごく初歩的な質問ですが、何もさわってないのに、たまにシーン内でのオブジェクトの位置が変わっていることがあるのですが、それは何故でしょうか?
同じく何もしないのに、コンポーネントが外れていたり、インスペクターの値が変わっていることもあります。
これは非常に困るので、位置や値が自分で変えるまでは絶対に変わらない対処法をご教示おねがいいたします!!!

118:名無し@キムチ
17/12/26 20:03:01.61 5fo0vrRf.net
なお>>113は当方ではないですよ。当方、無意味なコテ外しはしませんw

119:名前は開発中のものです。
17/12/26 20:26:13.27 O9PscLer.net
シーン遷移時に引き継ぎたい変数をどの手段から選べばいいか迷ってるんですけど、
1 static変数として持つ
2 ScriptableObjectを作ってそこに一時保管しておく
3 dontdestroyで変数の入ったスクリプトがアタッチされているオブジェクトを壊さず持っていく
4 外部のdb等


120:に一時保管しておく 辺りで迷ってるのですが、ケースバイケースだとは思うのですがどれがいいのかアドバイスお願いします。 1 なるべくstatic使わない方が初心者には良い とたまに聞きます。   似た名前のローカル変数を複数使っているので混乱する可能性もあるかなと 2 基本的に変動しない小さいマスターデータをdb代わりに使う事が多い と見ました   こういった使い方には適さないのかもと迷いました 3 普通のゲームと同じくいくつかのシーンをループして進めていくのでオブジェクトが被らないようにシングルトンにする手間や   処理は一切入れず変数入れとしてこの処理をするならScriotbleObjectでいいのかな?と思ったり 4 形式にもよるのでしょうが一時的な変数をイチイチ外部に書き出すのはどうなのかと



121:名前は開発中のものです。
17/12/26 21:20:53.35 ef3cEapS.net
当方、キムチでも、113でも、117でもありませんがw

122:名前は開発中のものです。
17/12/26 21:27:04.89 ef3cEapS.net
>>111
ボタンは引数なしで呼び出すだけだから簡単だけど、
スライダーは引数をどうやって受け取るかがわからなかったのでした
少なくとも公式のオンラインマニュアルからは探せず・・・
UIのインスペクターのリストをよーく見たら、
引数ありのメソッドと同名の、引く数なしのメソッドが上の方に見つかって解決したけど
>>99
やっぱり、リスト最上段のDynamic floatの直下にあるところをみると、
コレ(@)がUnity側で用意した機能なんでしょうね・・・

123:名前は開発中のものです。
17/12/26 21:32:11.65 ycBgqB9O.net
>>118
何が消えてOKで、何が消えたら不味いのか、切り分けが分からない
例えば、セーブ/ロード付けるなら、シーン移動時にセーブとロード
するから結局同じ事じゃないの?

124:名前は開発中のものです。
17/12/26 21:36:26.13 ef3cEapS.net
>>118
個人的には「3」を使ってます!
最初のLoad用のシーン0でフラグ管理用のオブジェクトを「DontDestroy」設定して、
その後はシーン1へ遷移して、以降はシーン0へは戻りません
(戻ると、「DontDestroy」設定を繰り返してしまうので・・・)
フラグ管理用のオブジェクトに載せたスクリプト内では、Start()内で、
ゲームを通してシーン間で共有する変数を全て「public」で宣言して初期値設定しています
そして、他のシーンの他のオブジェクトから、適宜呼び出して参照や代入して共有してますね

125:名前は開発中のものです。
17/12/26 21:40:47.37 ef3cEapS.net
>>121の言うように、
セーブありのRPGみたいな感じであれば、シーン変更前にセーブして、
シーン変更後にロードでも良い気がしますね
ゲーム終了後も保持したいなら、やはり外部保存だと思います
自分のは基本パスワード式のACTなので、
セーブシステムがないので、ゲーム内でのみ保持しています
パスワードの入力によって、フラグの初期値を変更して、
その後にゲーム開始となるようにしていますね
(まっすぐゲームスタートした場合は、全フラグを初期値で開始)

126:名前は開発中のものです。
17/12/26 23:19:01.53 V8TVTato.net
>>118
言うまでもないが可能不可能で言えばどれでも出来る
と言うか、シーンロードでDestroyされないヒエラルキーに依存しないものならなんでも保持は可能
適不適で言うなら
1.staticである必要性はない。staticにすることによる弊害の方が多いため不適
2.ScriptableObjectは実行時はReadOnlyなデータのバリエーションを扱うもの。使い方が間違っているため当然不適
3.揮発性の情報ならこれが最適※
4.不揮発性の情報ならこれこれが最適※
※揮発性情報は意図せずプロセスが死亡した場合に消えても良いもの、不揮発性情報はプロセスが死亡しても残るべきものとする

127:名前は開発中のものです。
17/12/26 23:39:55.98 ef3cEapS.net
staticにする必要性ってどこにあるんだろう??
FCやSFCで言うところの、RAMじゃなくてROM的な機能か?

128:名前は開発中のものです。
17/12/26 23:51:22.61 ed3wWG+q.net
えっ

129:名前は開発中のものです。
17/12/26 23:58:03.74 ef3cEapS.net
ゲーム内で使いまわす、汎用関数を定義するとか?

130:名前は開発中のものです。
17/12/27 00:01:05.49 iZzjfAdD.net
@コンソメ
Aコンスト
Bコンビニ

131:名前は開発中のものです。
17/12/27 00:48:25.95 4kYoBCMG.net
>>121-122
>>124
回答ありがとうざいました。
3でやってみようと思います。

132:名前は開発中のものです。
17/12/27 01:16:54.26 2+M/n1Lm.net
ROM的な機能は、ScriptableObjectの方だったか
全オブジェクトからアクセスできる関数(メソッド)作成はStaticが良いかもしれない
どのスクリプトからでも
@RGB→HSL変換できるメソッド:RGBto.HSL(R, G, B, out H, out S, out L)
ARGB→HSV変換できるメソッド:RGBto.HSV(R, G, B, out H, out S, out V)
を作ってみた

133:名前は開発中のものです。
17/12/27 01:19:10.80 2+M/n1Lm.net
public static class RGBto {
 public static void HSL(int R, int G, int B, out int H, out int S, out int L){
  int Max = Mathf.Max (R, G, B);
  int Min = Mathf.Min (R, G, B);
 if (Max == Min) {
  H = 360;
 } else if (G == Max) {
  H = 60 * (B - R) / (Max - Min) + 120;
 } else if (B == Max) {
  H = 60 * (R - G) / (Max - Min) + 240;
 } else {
  H = 60 * (G - B) / (Max - Min);
  if (H < 0) H = H + 360;
 }
 if (Max == 0 || Min == 255){
  S = 0;
 } else {
  S = 255 * (Max - Min) / (255 - Mathf.Abs(Max + Min - 255));
 }
  L = (Max + Min)/2;
 }

134:名前は開発中のものです。
17/12/27 01:19:30.81 2+M/n1Lm.net
 public static void HSV(int R, int G, int B, out int H, out int S, out int V){
  int Max = Mathf.Max (R, G, B);
  int Min = Mathf.Min (R, G, B);
 if (Max == Min) {
  H = 360;
 } else if (G == Max) {
  H = 60 * (B - R) / (Max - Min) + 120;
 } else if (B == Max) {
  H = 60 * (R - G) / (Max - Min) + 240;
 } else {
  H = 60 * (G - B) / (Max - Min);
  if (H < 0) H = H + 360;
 }
 if (Max == 0){
  S = 0;
 } else {
  S = 255 * (Max - Min) / Max;
 }
  V = Max;
 }
}
Hを求めるところはもっとまとめられるかも・・・
Hのみ0〜360(360で色相未定義)
RGB,SLVは0〜255

135:名前は開発中のものです。
17/12/27 01:47:53.25 +i3zpKSn.net
Stackoverflowみたいでいい感じじゃないの

136:名前は開発中のものです。
17/12/27 03:01:38.22 4kYoBCMG.net
また質問なんですけど、
シーン遷移した後って前シーンからdontdestroyで持ってきたオブジェのスクリプト内で
getcomponentってできないですか?
gameobject.findで指定したオブジェクトを見つけるまでは大丈夫なのですが
ゲットコンポーネントするとNullReferenceExceptionが帰ってきます
同じシーン内に作ったなんらかからならちゃんと動くのですが

137:名前は開発中のものです。
17/12/27 03:07:33.07 4kYoBCMG.net
もしかするとfindも失敗してるのかもしれませんが、
sceneをパスに指定するようなことが必要になるのでしょうか?
dontrestroyしたオブジェクトはdontdestroyの子みたいな表示になりますし
共通シーン内でしか受け渡しできないとかなのでしょうか?

138:名前は開発中のものです。
17/12/27 12:43:41.61 YC5nHwtt.net
全部自作した奴が偉い君は
ガワだけ張り替えて大当たりするようなソシャゲが
天下取ってる現状に発狂してそう

139:名前は開発中のものです。
17/12/27 12:54:38.15 WZqeNEin.net
>>103
UnityのUIのボタンのフォーカスとフォーカス対象の設定
URLリンク(gametukurikata.com)
>あらかじめボタン1つがフォーカスされていないと他のボタンの選択が出来ません
>EventSystemに最初に選択するボタンの設定は出来ます

>>89 >>91
[UI] スライダーで変更した値を取得できない現象に対処した [Unity]
URLリンク(negilab-unity.com)
>スライダーの変更値を float として取得するのではなく、Slider.value 変数として取得するように書き換えたところ、問題なく取得できました
>スライダーのインスペクタで、引数にスライダーのオブジェクトを指定
uGUIのSliderの値をスクリプト側で受け取る方法
URLリンク(unitymemo.blog.jp)
>SliderをGetComponentしてvalueを参照することでスライド値を参照できます
>OnValueChangedに定義したメソッド


140:ナスライド値を受け取る方法 >メソッドを選択する際、一番上のほうの「redSlider」を選択する事 >下のほうにも「redSlider(float)」がありますが、こちらを選んでも正しく値を渡すことは出来ません



141:名前は開発中のものです。
17/12/27 12:57:04.12 WZqeNEin.net
>>102
Unity : 3Dシーン内のCanvasが邪魔
URLリンク(indie-du.com)
>UnityがCanvasの1ピクセルを1unitとして計算して表示
>1unitは1メートルなので、100ピクセルのUIは100メートルで描画
>Canvasの左下が原点(0, 0, 0)に合っている

142:名前は開発中のものです。
17/12/27 14:56:11.54 +i3zpKSn.net
見ての通り、質問せずに最初から自分でググってれば数分で解決している問題が多いな。
自分でググらないといけない事を人にググってもらってるだけなんだから。

143:名前は開発中のものです。
17/12/27 17:26:33.07 u5IVM9F6.net
カンバス、そんなに邪魔?
消しちゃえばいいやん。必要な時にtrueにしてさ。

144:名前は開発中のものです。
17/12/27 18:22:37.68 WZqeNEin.net
>>140
そうだよね
GUIの表示だけoffにすれば済む話だよね

145:名前は開発中のものです。
17/12/27 18:41:34.06 WZqeNEin.net
>>134
何をGetcomponentしたいの?
Sceneを指定したりはしないはず
ObjectはFindされているんでしょ?
obj内にObjectが入っている状態で、スクリプトをGetcomponentしたいなら、
スクリプト名 s = obj.GetComponent<スクリプト名>();
そのスクリプト内の変数をゲットしたいなら
s.変数名
変数は引用元のスクリプトの最初にpublicで宣言しておいて

146:名前は開発中のものです。
17/12/27 18:54:27.94 fBJY1RTE.net
やってみたがFindもGetComponentも普通に出来るよな
検索範囲は明示がないけどHierarchyウインドに表示されてる物は
全捜索するようで、シーンが分かれていようが全く関係がない
(Updateで使うなってのは、毎回Hierarchy全捜索されたら洒落にならん)

147:名前は開発中のものです。
17/12/27 18:56:13.87 WZqeNEin.net
>>134
dontrestroyしたObjectに付いているスクリプト内で、
別のシーンにある他のObjectのコンポーネントを取得してみたけど、普通に受け取れたよ?
Scene0で、共有Objectをdontrestroyして、Scene1へ遷移
Scene1で、共有Objectのスクリプトから、
Scene1の別のObjectのtransfomを取得したら、普通に見れた
FindだとHierarchyにない別のSceneのObjectは検索できないはず
Objectを検索できたのに、GetComponentできないなら、
そのObjectには取得しようとしているコンポーネントがないか、
他のObjectから取得できないように保護されている(変数ならprivate宣言)かでは?

148:名前は開発中のものです。
17/12/27 19:04:57.79 WZqeNEin.net
>>134
Debug.Logで、FindしたGameObjectの中身を表示、
GetComponentした中身を表示してみることを勧めるよ
dontrestroyしたObjectに付いているスクリプトでも、
それ以外のもともとそのSceneにあったObjectに付いているスクリプトでも
まさか、dontrestroyしたObjectを出すためのSecneを省いて
テストプレイしているなんてことはないよね?
自分の例で言えば、Scene0からじゃなくて、Scene1からテストしているとか
テストプレイ中、HierarchyにdontrestroyしたObjectは出ているんだよね?
毎フレームdontrestroyしまくったりしていないよね??

149:名前は開発中のものです。
17/12/27 19:40:39.07 fBJY1RTE.net
>>144
>FindだとHierarchyにない別のSceneのObjectは検索できないはず
なるほどこういうことか
URLリンク(imgur.com)
transform.FindとGameObject.Findは検索範囲が違う
俺はGameObject.Findだから取れてるみたい

150:名前は開発中のものです。
17/12/27 19:49:56.88 y/zeZUnT.net
何百枚もカンバスあるの?
そんなに多くないから登録しときゃ見つかるでしょ。

151:名前は開発中のものです。
17/12/27 19:54:05.52 9tGAk59e.net
みんなカンバス読みなの?
キャンバス派は少数?

152:名前は開発中のものです。
17/12/27 19:56:05.13 y/zeZUnT.net
どっちでもいいなぁw

153:名前は開発中のものです。
17/12/27 19:58:36.60 TaFXzcmh.net
英語だとカンバスが近いらしい。HowTo動画とか見てるとカンバスカンバス言われるからカンバス読みになるんじゃないの。
キャンバスは美術用語で、学校で習うのはキャンバス読みだと思う。

154:名無し@キムチ
17/12/27 20:09:12.86 oeXBuupd.net
>>150
発音のことな


155:フか・ 英語でもキャンバスが近いよw



156:名前は開発中のものです。
17/12/27 20:12:19.02 9tGAk59e.net
別にどっちでも良いしどっちでも伝わるけど喋るときはどっちが多いのかなぁっていう素朴な疑問
ネイティブの発音はどうでも良い、カタカナ表記することが云々って話になるし

157:名前は開発中のものです。
17/12/27 20:15:02.72 Ojr+yz4V.net
>>136
できる/努力する奴ひっぱり下ろすのはゲスすぎないか
俺もわかんないまま借りてるけどどっか後ろめたいよ

158:名前は開発中のものです。
17/12/27 20:26:06.89 4kYoBCMG.net
>>142-145
レス遅くなりました。mm
dontrestroyしたオブジェクトにアタッチされたスクリプトから
遷移後のオブジェクトがfind出来てるか確認したところ、出来ていませんでした。
上で出来ていると勘違いしたのはfindの時点でエラーが帰ってこなかったからという単純な理由でした。
遷移後のシーン内に作ったオブジェクトのスクリプトから同じコードをコピペしてみましたが
こちらは普通にfind出来ていました
public gameobjectとしてインスペクター上で両方確認しました。
うーん。

159:名前は開発中のものです。
17/12/27 20:36:04.46 JxfZYfQR.net
香港人
「高卒だらけの日本人英語は、無いところにYの発音が入っちゃいます。土人丸出しです。」

160:名前は開発中のものです。
17/12/27 20:40:05.60 4kYoBCMG.net
今試したのですが、
objA dontdestroyしたオブジェクト
|   これにアタッチされているスクリプト内でボタン押されたら遷移する処理
|   その遷移処理の後に同スクリプト内の別メソッド@を呼び出して遷移後のobjBをFind →失敗

シーン遷移
   objB
   遷移後のシーンに配置されているボタンから、objAのメソッド@を呼び出す → 成功
                                                     objAのヒエラルキーでobjBが格納されている
だったんですけど、これどういうことなんだろう…

161:名前は開発中のものです。
17/12/27 20:43:19.36 4kYoBCMG.net
>>156だとなんか時系列変に見えますね;
objA dontdestroyしたオブジェクト
|           これにアタッチされているスクリプト内でボタン押されたら遷移する処理
|           

シーン遷移
   objB
            その遷移処理の後に同スクリプト内の別メソッド@を呼び出して遷移後のobjBをFind →失敗
                                        ↑             ↓
   遷移後のシーンに配置されているボタンから、objAのメソッド@を呼び出す     成功
                                                     objAのヒエラルキーでobjBが格納されている
みたいな感じです
こっちのが見づらいかもしれませんが…

162:名前は開発中のものです。
17/12/27 20:44:21.74 y/zeZUnT.net
遷移処理はどこに遷移?
ところどころ足りないので補足よろ。

163:名前は開発中のものです。
17/12/27 20:46:34.13 y/zeZUnT.net
今来たw

164:名前は開発中のものです。
17/12/27 20:48:37.38 4kYoBCMG.net
シーン1
 objA dontdestroyしたオブジェクト
 |           これにアタッチされているスクリプト内でボタン押されたら遷移する処理
 |           
 ↓
シーン2へ遷移
   objB
            その遷移処理の後に同スクリプト内の別メソッド@を呼び出して遷移後のobjBをFind →失敗
                                        ↑             ↓
   遷移後のシーンに配置されているボタンから、objAのメソッド@を呼び出す     成功
                                                     objAのヒエラルキーでobjBが格納されている
これで質問に答えられてますかね?

165:名前は開発中のものです。
17/12/27 21:03:16.65 y/zeZUnT.net
遷移したあとの間が少ないとか。トンチンカンかw

166:名前は開発中のものです。
17/12/27 21:17:06.84 fBJY1RTE.net
>>160
失敗しないし普通に出来る

167:名前は開発中のものです。
17/12/27 21:22:17.48 fBJY1RTE.net
てか、何で相互に見れるようにする必要があるの?
無駄が多すぎるだろ
DontDestroyOnLoadしたGameObjectを一方的に参照する
データ保管庫みたいに切り分けて使えばいいだけじゃない

168:名前は開発中のものです。
17/12/27 21:23:12.19 4kYoBCMG.net
うーん…なんでだろう
またもう一つ試したのですが、
シーン1で objA に加えて objCを作り、
objCにスクリプトをアタッチし、これもdontdestroyして中に変数を一つ入れておきました
シーン1
 objA dontdestroyしたオブジェクト
 |           これにアタッチされているスクリプト内でボタン押されたら遷移する処理
 |           
 ↓
シーン2へ遷移
   objB
            その遷移処理の後に同スクリプト内の別メソッド@を呼び出して遷移後のobjBをFind →失敗
         ※ ここで今回作ったobjCから参照してみる → 成功
                                              ↑        ↓
   遷移後のシーンに配置されているボタンから、objAのメソッド@を呼び出す     成功
                                                     objAのヒエラルキーでobjBが格納されている
と、見づらいかもしれませんが同じシーンから持ってきたオブジェクトに対しては普通にfindもゲットコンポーネントもできました
あああああああああわかんね!!!!!!!!!!!!!

169:名前は開発中のものです。
17/12/27 21:26:43.61 4kYoBCMG.net
>>163
遷移後にそのまま冒頭のイベント処理みたいなことをやりたくて
ならそのまま遷移処理の後に引き続きそのメソッド内である程度指示だして引継ぎすればよくね?
でやってみたら遷移後のシーンのオブジェクト参照ができなかったということから質問をしました

170:名前は開発中のものです。
17/12/27 21:33:49.05 fBJY1RTE.net
値の保持に使ってるんじゃないのかよ
何の意味があるんだそれ

171:名前は開発中のものです。
17/12/27 21:39:00.89 4kYoBCMG.net
上でも書いてるのですけど本来の目的はそれですが
試してみたところエラーが出たので質問をした ということです

172:名前は開発中のものです。
17/12/27 21:48:41.42 fBJY1RTE.net
objAを外から読み書きできるようにしたんだよね?
なんでobjAからobjBを見る必要があるのか分からない(出来るけど)

173:名前は開発中のものです。
17/12/27 22:33:19.52 UZCkhUUp.net
>>165
シーン遷移時は、前のシーンのオブジェクトを破棄して新たなシーンのオブジェクトを構築する処理が走る
この処理が終わらないと新しいシーンのオブジェクトはFindでは見つからない
よって、新たなシーンのオブジェクトを見つけたければSceneManager.sceneLoadedデリゲートを使ってシーンのロードが完了してから処理を行う必要がある
ちなみにSceneManager.sceneLoadedはロードされたシーンのオブジェクトのAwakeが完了し、Startが呼ばれる前に呼ばれる事に注意
またこのデリゲートはどのシーンがロードされても呼ばれるから処理内でシーン毎に振り分けるかハンドラをつけ外しするなどの対処が必要

174:名無し@キムチ
17/12/27 22:59:24.99 oeXBuupd.net
>>164
遷移後のobjBをFind →失敗
当方の経験ではFindは、そのオブジェクトにアタッチされているスクリプトからでないと、失敗したり成功したりその時々によってさまざまだな。

175:名前は開発中のものです。
17/12/27 23:23:24.84 Y6rKayv0.net
なんだやっぱりキムチか

176:名前は開発中のものです。
17/12/27 23:29:25.63 9tGAk59e.net
プログラムが成功したり失敗したりなんて挙動するわけない
成功するのも失敗するのも理由がある
理由を理解できていないのにプログラムのせいにするプログラマー

177:名前は開発中のものです。
17/12/27 23:56:23.72 2+M/n1Lm.net
>遷移後のシーンに配置されているボタンから、objAのメソッド@を呼び出す 
本当に呼び出せている?
Find以前の問題だったりして・・・

178:名前は開発中のものです。
17/12/28 00:13:29.64 mH5YII84.net
ボタンからの入力を受けていないだけとかはないですか?
UIから、その該当スクリプトへのコールがかかっていないとか?
入力をInputにして、
if?(Input.GetKeyDown?(KeyCode.Space))?{
 Debug.Log("Input OK");
 GameObject A = GameObject.Find("objA");
 Debug.Log(A);
}
を追加して、
スクリプトが機能しているかどうか、
オブジェクトを取得できているかどうかを確認してみてください

179:名前は開発中のものです。
17/12/28 00:18:44.79 mH5YII84.net
すみません、objAからobjBの方を見たいんですね
objAのスクリプトのUpdate()内に、
if (Input.GetKeyDown (KeyCode.Space)) {
 Debug.Log("Input OK");
 GameObject B = GameObject.Find("objB");
 Debug.Log(B);
}
を追加して、
スクリプトAが機能しているかどうか、
オブジェクトBを取得できているかどうかを確認してみてください
ボタンからの呼び出しが届いていないだけであれば、
上記でオブジェクトを取得できるはずですが・・・
シーン2では、
objA:DontDestroyによって、シーン1から持ち越し
objB
・・・が、Hierarchy上に同時に並んでいるわけですものね?

180:名前は開発中のものです。
17/12/28 00:34:38.37 mH5YII84.net
各オブジェクトのそれぞれのスクリプトで行っていることが良く分からないのですが、
Scene1
 objA-A.cs:DontDestory
  ボタン→LoadScene("Scene1")
 objC-C.cs:DontDestory

Scene2
 objA-A.cs:DontDestory(Scene1から)
  メソッド@→A = Find("objB") →NG
 objC-C.cs:DontDestory(Scene1から)
  Aのメソッド@→A = Find("objB") →OK
 objB-B.cs
  ボタン→Aのメソッド@→A = Find("objB") →OK
こういうことなのでしょうか??
A = Find("objB")は、
GameObject A = GameObject.Find("objB");のことです
メソッド@を呼ぶタイミングはどうやって遷移後に指定しているのでしょうか?
まさか、LoadScene("Scene1")と同じフレーム内で呼んでいないですよね??

181:名前は開発中のものです。
17/12/28 00:51:12.79 fQL7hUYb.net
>>169
レス遅れてすみません。
ありがとうございます。
とても参考になり、わかりやすかったです。
結果として、やったことは
SceneManager.LoadSceneの直後にSceneManager.sceneLoadedを行って
そのデリゲート処理完了後にそれぞれのテストメソッドを呼び出して参照したりしたところ
問題なく参照できました。
>>161にはレスしませんでしたが、当たりだった感じです。
>>170
なるほど。。。他の方々のレスを見る感じ、テスト環境でやっていたのかもしれないので
もしかするとオブジェクト等の量とかでかわるんですかね?
>>173
そこは上のレスを書いた時点で確認できていました
debug.log等での確認なので精度はわかりませんが

182:名前は開発中のものです。
17/12/28 00:56:34.32 fQL7hUYb.net
>>174-176
Scene1
 objA-A.cs:DontDestory
  ボタン→ *A.cs内の LoadScene("Scene1") 呼び出し
 objC-C.cs:DontDestory * +変数1

Scene2
 objA-A.cs:DontDestory(Scene1から)
  メソッド@→A = Find("objB") →NG
 objC-C.cs:DontDestory(Scene1から)
  Aのメソッド@→A = Find("objB") →OK *   Aのメソッド@→A = Find("objC") →OK です
 objB-B.cs
  ボタン→Aのメソッド@→A = Find("objB") →OK

A.Csの中の処理流れは
{
LoadScene2;
gameobject.find(Scene2のobjB)
}
でBが見つからない ということでした
>メソッド@を呼ぶタイミングはどうやって遷移後に指定しているのでしょうか?
まさか、LoadScene("Scene1")と同じフレーム内で呼んでいないですよね??
恐らくそういうことだったんだと思います

183:名前は開発中のものです。
17/12/28 01:23:13.78 GhM3Lpso.net
デバッガ使えば5分で分かった事を22時間も掛けて
大した効率だよな

184:名前は開発中のものです。
17/12/28 01:43:55.44 mH5YII84.net
以前、物理演算で、どういう処理だったか忘れたけど、
変数を物理演算に設定した直後に、
同じフレーム内でデバッグログに物理演算結果を出力しようとしたら、
変数が設定された結果が出せなくて、
Invokeで1フレーム後にデバッグログを呼び出したら、出力できたことがあるので、
一度フレームを走らせないといけないポイントで処理を連続してしまうのは、
結構ピットホールになりやすいかもしれない

185:名前は開発中のものです。
17/12/28 02:14:32.76 mH5YII84.net
velocityの変更、positionの変更は、同じフレーム内で取得しても変更が反映されるけど、
例えばAddForceでは、たとえ1フレームで加速するForceMode.Impulseでも、
同じフレーム内ではまだvelocityは速度変更されておらず、
次のフレームでvelocityの変更が反映されるみたい
でも、1フレームで移動を行うMovePositionは、
同じフレーム内でpositionの変更が反映されているという・・・

186:名前は開発中のものです。
17/12/28 02:20:34.36 aEDu9yFW.net
全然関係ねえよ
オブジェクトの生成と破壊は1フレーム掛かるから後処理は1フレーム待てと言われただろ
シーンの呼び出しも同じって>169に言われてんだろ

187:名前は開発中のものです。
17/12/28 02:49:46.90 mH5YII84.net
Invokeに1フレームかかるのか、1フレーム内で行う処理の量の問題なのか、
PCの性能の違いなのか、Unityのバージョンの違いなのかは不明だけど、
Rigidbody rb;
void Start() {
 rb = GetComponent<Rigidbody>();
 rb.angularVelocity = new Vector3(0, 0, 180 * Mathf.Deg2Rad);
 Invoke ("Log", 1);
 //Invoke("Log", 1 - Time.fixedDeltaTime);
}
void Log() {
 rb.angularVelocity = Vector3.zero;
 Debug.Log (rb.rotation);
 Debug.Log(rb.rotation.eulerAngles.z);
}
本来、Z軸回転に180度/秒を入れて1秒間回転させて止めているわけだから、
Z軸の回転角は180が返るはずだけど、183.6という結果になってしまいます
Invoke("A", 1 - Time.fixedDeltaTime)で1フレームは早く呼ぶと、180が返るから、
おそらくInvokeで呼ぶ場合は、1フレーム遅れるんでしょうね・・・

188:名前は開発中のものです。
17/12/28 02:51:19.62 ZI2vMH5M.net
外様が言うのは何だが
コードも貼られて実に良スレだな

189:名前は開発中のものです。
17/12/28 03:22:50.01 mH5YII84.net
ごめんなさい、原因が分かったよ
Start()から、Log()を呼んでいるからでした・・・
Start()が終了するのに1フレームかかるみたいですね
Rigidbody rb;
void Start() {
 rb = GetComponent<Rigidbody>();
 Start2()
}
void Start2() {
 rb.angularVelocity = new Vector3(0, 0, 180 * Mathf.Deg2Rad);
 Invoke ("Log", 1);
}
void Log() {
 rb.angularVelocity = Vector3.zero;
 Debug.Log (rb.rotation);
 Debug.Log(rb.rotation.eulerAngles.z);
}
StartからStart2を呼んで、Start2でangularVelocityを設定すれば、
Start2()からLog()を呼ぶ場合は、1秒指定のInvokeで、ぴったり180でした

190:名前は開発中のものです。
17/12/28 03:24:48.63 yHTFG4+0.net
物理はFixedUpdateのタイムスライスで動いてるから、
Update系とは時間の流れ違うだろ

191:名前は開発中のものです。
17/12/28 04:43:29.76 NrJHfHro.net
>>185
何の確認もせずに適当な思い込みで妄想しても
的外れなだけじゃないキムチ君w
毎回そんなアホな事をやってるから迷走すんだよ
だったらStartとStart2に
Debug.Log(Time.frameCount);
で実実行時のフレームカウント出してみなよ
両方とも1って出るから

192:名前は開発中のものです。
17/12/28 07:27:31.37 yfK1iHQW.net
161最強!w

193:名前は開発中のものです。



194:
初心者です マテリアル作って保存したらファイル名が勝手に.matから.MATに変わってそのせいで警告が出てる??みたい パソコンのせいなんでしょうか 解決方法分かりませんか?



195:名前は開発中のものです。
17/12/28 09:35:07.71 PGevnyVZ.net
警告文そのものを貼ってください

196:名前は開発中のものです。
17/12/28 09:53:48.72 fukyqugk.net
警告で
The GUID for assets/アセット名.mat is already in ues by assets/アセット名.MAT.
Assigning a new guid.
エラーで
Refresh case sensitivity failure.
Assets:Assets/アセット名.mat ; Metafile:Assets/アセット名.mat.meta
です

197:名前は開発中のものです。
17/12/28 10:09:16.56 ZI2vMH5M.net
どーせテクスチャをエクスプローラーからコピペして置き換えしたりしてんだろ

198:名前は開発中のものです。
17/12/28 10:24:27.92 o+JGejkD.net
>>189
君みたいな雑魚にUnityは使いこなせません
10年webで下積みしてから出直してきなさい

199:名前は開発中のものです。
17/12/28 10:45:38.68 fukyqugk.net
>>192
いえ、普通にUnityエディタ内でmaterialを作成してます
で真っ白なまま保存しても.matで保存されるんですが少しでも色を変えると保存した時に拡張子が.MATに変わってしまうんです

200:名前は開発中のものです。
17/12/28 11:13:08.50 ghF3Rjv1.net
>>194
ファイル消したりしてるでしょ
元ファイル消したのにmetaファイル消してないから名前が使えない
だから別の名前使うね、ってなってる
生成も削除も移動も全てuntiy上で行ってください

201:名前は開発中のものです。
17/12/28 11:16:47.13 ghF3Rjv1.net
てか警告分の内容は理解してる?
中学英語の単語しか無いぞ
英語だからって毛嫌いせず読もうとしてみるの大事
だんだん慣れてくるから

202:名前は開発中のものです。
17/12/28 12:01:44.31 fukyqugk.net
>>195
ありがとうございます、消してしまった気がします…
こうなった場合の対処法ってどうすれば良いんですか?調べたんですけど「やらないように注意」みたいにしか書いてなくて…
警告文は1回Google翻訳に突っ込んだ時にルー語で翻訳されてキレそうになりましたw
ちゃんと調べてある程度意味はわかりました

203:名前は開発中のものです。
17/12/28 12:18:12.10 ghF3Rjv1.net
>>197
基本的には不要なmetaファイルを消せばいい
metaファイルの中を理解することは大変だけどmetaファイルの存在意義を理解することはそこまで難しくはないと思う
ググればmetaファイルとはなんぞやって記事いっぱいあるからゆっくり読んでみればいい
全部が理解できなくてもいいから色んな記事を読むといい
その過程で色んな知識がつくはず
それを繰り返してればそのうち色んなことに対処できるようになる

204:名前は開発中のものです。
17/12/28 12:24:20.51 ghF3Rjv1.net
>>197
あと警告やエラー文は基本翻訳ソフトに突っ込まないほうがいい
単語の意味を調べる程度にしときな
プログラム上で使われる意味合いと英文としての意味合いが異なって余計に混乱することになることが多いと思う
GUIDみたいな略語なんかは翻訳仕様がないしね
むしろ警告文をそのままググるほうが同じ問題で引っかかった人が解決法とか書いてくれてたりすることもあるからそういうふうに調べたほうがいいよ

205:名前は開発中のものです。
17/12/28 12:36:22.53 epGNZdyE.net
>>185
正確に言うと1フレーム内なんだけど、イベントが呼び出される順番の問題では?
Awake
Start
FixedUpdate
Update
LastUpdate
OnRenderImage
OnGUI
OnDestroy
同じフレーム内でも、Updateの前にFixedUpdateが来るから、
FixedUpdateの処理が1フレーム分先


206:の内容になっているんだと思う



207:名前は開発中のものです。
17/12/28 12:43:17.39 fukyqugk.net
>>198
>>199
わかりました、また調べてみます
色々とご教示ありがとうございました

208:名前は開発中のものです。
17/12/28 12:44:32.49 epGNZdyE.net
Start:
 Debug.Log
 Invoke A 0秒
 Invoke B 0秒
FixedUpdate:
 Debug.Log
Update:
 Debug.Log
A:
 Debug.Log
B:
 Debug.Log
 Invoke AA 0秒
AA:
 Debug.Log
Time.frameCountをDebug.Logすると、全て1になるね
(FixedUpdateとUpdateは初回のみDebug.Log)

209:名前は開発中のものです。
17/12/28 12:48:38.22 epGNZdyE.net
実際にやってみると、Debug.Logされる順番は、
@Start
AFixedUpdate
BA
CB
DUpdate
EAA
の順になるので、
@Satrt→BAの間には、FixedUpdateが入っているので、
その間に物理演算の結果が更新されますが、
CB→EAAの間には、FixedUpdateが入らないので、
その間に物理演算の結果は更新されません

210:名前は開発中のものです。
17/12/28 12:57:15.87 U/moIC9W.net
ID:ghF3Rjv1の優しさに勃起した

211:名前は開発中のものです。
17/12/28 13:14:29.51 ghF3Rjv1.net
ホモはお帰りください

212:名前は開発中のものです。
17/12/28 13:27:13.50 bdqePp8Y.net
>>203
アセットを買うのがいいですよ

213:名前は開発中のものです。
17/12/28 15:02:55.90 YB1B6aLH.net
質問者が全部キムチなのが問題だ

214:名前は開発中のものです。
17/12/28 15:24:10.83 tnUbOHhI.net
何もない所で誰も引っ掛からない孔明の罠に引っ掛かって
大騒ぎするのがキムチ

215:名無し@キムチ
17/12/28 19:12:09.06 26YsjXJQ.net
>>177
他のオブジェクトのアクティブのtrueはfalse明らかにオブジェクトの量で変わる。
オブジェクトの量を増やすと、それまでtrueはfalseがちゃんと動いていたものが、動かなくなる。
その行の削除するとまたちゃんと動き出すことから、それは明らか。
それを回避するには、オブジェクトごとにスクリプトをつけてそれに書けばアクティブのtrueはfalseは確実に動く。

216:名無し@キムチ
17/12/28 20:33:48.36 26YsjXJQ.net
最近わかったんだが、Unityでは基本あるオブジェクトにつけたスクリプトから他のオブジェクトを動かしてはいけないんですね。
あくまでもそのオブジェクトにだけ関するスクリプトであるということ。
MonoBehaviorの「Mono」とはそういう意味なんですね。

217:名前は開発中のものです。
17/12/28 20:57:02.16 bdqePp8Y.net
何いってんのこいつw

218:名前は開発中のものです。
17/12/28 21:42:51.63 mWenZKXP.net
NSObjectのNSはNextStepの略だしな

219:名前は開発中のものです。
17/12/28 21:51:39.14 VBJfLBcj.net
NSって。。風俗かよwww

220:名前は開発中のものです。
17/12/28 22:22:34.63 epGNZdyE.net
>>210
物理演算をつけたオブジェクトは、transform命令では動かさない方が良い
同様に、Rigidbody.positionやRigidbody.rotationも極力直接いじらないほうが良い
(なるべく、初期値を設定するだけにしておく)
物理演算をつけたオブジェクトは、原則velocity設定や、
AddForceかAddTorqueで動かさないと、演算に干渉して挙動が不安定になる

221:名前は開発中のものです。
17/12/28 23:00:56.25 mH5YII84.net
>>187 >>200
全部1フレーム内での出来事だったのか
>>186 >>200
呼び出される順序の問題で、物理演算をまたいでしまうと、
その時点で1フレーム分の内容のズレが出ちゃうのが真相か・・・

222:名前は開発中のものです。
17/12/29 09:19:21.34 K0u5BC7r.net
>>214
それはワープになるからな
MovePosition使えば大丈夫だよ

223:名前は開発中のものです。
17/12/29 23:42:13.44 qixlPtWp.net
初心者です。
2Dでジャンプアクションゲームを物理演算で製作中です。
ようやく左右への移動ができるようになったところです。
(Input.GetAxisをvelocityに代入しています)
ジャンプの際に、お聞きしたい事があるのですが、
まず地面に接している判定をどうするのか、
ジャンプはvelocity変更でよいのか、AddForceの方がよいのか、
ボタンを押している時間に応じてジャンプを高くしたい
(無制限に高くではなく、ジャンプ力には上限を設けたい)
などを詳しく解説してあるサイトとかありますでしょうか?
あるいは、ジャンプ動作のスクリプトに、定石・セオリーみたいのはあるのでしょうか?

224:名前は開発中のものです。
17/12/30 00:35:07.56 5n68sL0m.net
AddForceの方がいいよ、単純にジャンプだけだったら変わんないかもしれないけど他の動作と重なったときに融通がきかなくなる
設置してるかどうかはコリジョンを見れば良いんだよ
ジャンプ系の処理は定石化してるから、Youtubeでしっかり頭に叩き込んだほうが良いよ
数値の上限については、ちゃんとC#らしい書き方ができるといいね

225:名前は開発中のものです。
17/12/30 09:26:09.43 sj8HSsvd.net
UNITYの定石としては、アセットを買うことですね

226:名前は開発中のものです。
17/12/30 14:20:42.17 LpYIXbLi.net
"物理演算"でやるならVelocityは基本使っちゃだめよ
物理演算を無視した移動だから見た目が物理っぽくなくなるよ
キャラの操作制御はInput.GetAxisでもいいがCharacter Controllerを使えばisGroundというパラメーターで地面との接点判定できるよ

227:名前は開発中のものです。
17/12/30 16:10:37.30 DH75+pHx.net
>>217
初心者向けに
2D platformerというジャンプアクションゲームのアセット(無料)がある
URLリンク(www.assetstore.unity3d.com)
あとはggれば解説してるとこがあったはず

228:217です
17/12/30 23:14:59.07 6xEuTupH.net
この時間しかレスできず、大変すみません。
皆さん、いろいろアドバイス下さり、ありがとうございます。
>>218さん
>>220さん
velocityは直接変えない方がよいんですね。
AddForceでImpuseモードで変更することにしました。
>>219さん
>>221さん
アセットは魅力的に思っていましたが、導入方法が分からなかったのと、
基本有料と思って、二の足を踏んでいました。
無料のジャンプアセットあるのですね。ためになりました。
>>220さん
Character Controllerは3D専用の機能かと思って触っていませんでした。
これから勉強します。

229:名前は開発中のものです。
17/12/31 11:58:25.06 YEuDj3bX.net
物理演算を使って、物理法則に則ったゲームを作成するのか、
物理演算を使って、既存型のゲームを作成するのか、
(コライダーは利用するが、動きは非物理)
物理演算を使わずに、既存型のゲームを作成するのか
(旧来のゲームシステム)

230:名前は開発中のものです。
17/12/31 12:40:49.59 YEuDj3bX.net
positionの直接変更は、コライダーへの衝突計算が乱れる危険性あり
MovePositionによるposition変更は、velocity変更に基づいているので、
比較的安全にコライダーとの衝突計算がなされる
velocity変更を行わずに、全てAddForceで行った方が、
より自然な物理演算になるけど、velocityを0にするのが難しくなる
AddForceでvelocityを0にしようと逆方向に力を与え続けると、
逆向きの加速度がついてしまうので、基本的にはDragで減速せざるを得ない

231:名前は開発中のものです。
17/12/31 13:07:55.13 YEuDj3bX.net
2Dで地面との接触判定を行うのであれば、
・IsTouching,IsTouchingLayers
 他のコライダーやレイヤーとの接触を検出する方法
 (全方向からの接触を検出してしまう)
・Physics2D.OverlapArea,Physics2D.OverlapBox
 配置した矩形が接触したコライダーを検出する方法
 (OverlapAreaとOverlapBoxは矩形の設定方法が異なる)
・Physics2D.Linecast
 配置した線分が接触したコライダーを検出する方法
 (RayCastとは異なり、直線ではなく長さを持つ線分)
・Physics2D.BoxCast,Physics2D.RayCast
 放射した直線が接触したコライダーを検出する方法
 (BoxCastはRayCastの先端が矩形)
IsTouching系は、Collider2D.(自分との判定)とPhysics2D.(2者間の判定)がある
Cast系は投射方向を指定できるが、投射前に接触していると検出されないのが難点
LineCastやRayCastは線のため太さがなく、幅を持つコライダーでは複数本が必要
OverlapBoxと違って、Physics.CheckBoxは、2Dでは使えない


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

837日前に更新/307 KB
担当:undef