[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 08/29 08:18 / Filesize : 307 KB / Number-of Response : 1053
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:名前は開発中のものです。 mailto:sage [2017/12/19(火) 09:35:55.55 ID:VZwsAqll.net]
フリー版で開発したゲームは個人・法人を問わず追加のロイヤリティーなしで販売できます。
プラットフォームサポートはiPhone/iPod Touch/iPad、Mac、PC、Web、Wii、Xbox360、Android、PlayStation 3、PlayStation 4、PS Vita他

次スレは>>950以降にできるだけ早く(できれば回答者が回答した後にでも余裕を持って)建てて下さい。

■Unity 2ch Wiki(まとめ、過去ログ、リンク集)
www24.atwiki.jp/unity2ch/

●リンク
・Unity(日本公式サイト)
unity3d.com/jp
・マニュアル
 docs.unity3d.com/ja/current/Manual/index.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質問スレッド32
mevius.5ch.net/test/read.cgi/gamedev/1509307535/

145 名前:名前は開発中のものです。 mailto:sage [2017/12/27(水) 18:41:34.06 ID:WZqeNEin.net]
>>134
何をGetcomponentしたいの?
Sceneを指定したりはしないはず

ObjectはFindされているんでしょ?
obj内にObjectが入っている状態で、スクリプトをGetcomponentしたいなら、
スクリプト名 s = obj.GetComponent<スクリプト名>();

そのスクリプト内の変数をゲットしたいなら
s.変数名

変数は引用元のスクリプトの最初にpublicで宣言しておいて

146 名前:名前は開発中のものです。 mailto:sage [2017/12/27(水) 18:54:27.94 ID:fBJY1RTE.net]
やってみたがFindもGetComponentも普通に出来るよな

検索範囲は明示がないけどHierarchyウインドに表示されてる物は
全捜索するようで、シーンが分かれていようが全く関係がない
(Updateで使うなってのは、毎回Hierarchy全捜索されたら洒落にならん)

147 名前:名前は開発中のものです。 mailto:sage [2017/12/27(水) 18:56:13.87 ID: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 名前:名前は開発中のものです。 mailto:sage [2017/12/27(水) 19:04:57.79 ID:WZqeNEin.net]
>>134
Debug.Logで、FindしたGameObjectの中身を表示、
GetComponentした中身を表示してみることを勧めるよ

dontrestroyしたObjectに付いているスクリプトでも、
それ以外のもともとそのSceneにあったObjectに付いているスクリプトでも

まさか、dontrestroyしたObjectを出すためのSecneを省いて
テストプレイしているなんてことはないよね?

自分の例で言えば、Scene0からじゃなくて、Scene1からテストしているとか

テストプレイ中、HierarchyにdontrestroyしたObjectは出ているんだよね?
毎フレームdontrestroyしまくったりしていないよね??

149 名前:名前は開発中のものです。 mailto:sage [2017/12/27(水) 19:40:39.07 ID:fBJY1RTE.net]
>>144
>FindだとHierarchyにない別のSceneのObjectは検索できないはず
なるほどこういうことか
imgur.com/RGyGQa6.png
transform.FindとGameObject.Findは検索範囲が違う

俺はGameObject.Findだから取れてるみたい

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

151 名前:名前は開発中のものです。 mailto:sage [2017/12/27(水) 19:54:05.52 ID:9tGAk59e.net]
みんなカンバス読みなの?
キャンバス派は少数?

152 名前:名前は開発中のものです。 mailto:sage [2017/12/27(水) 19:56:05.13 ID:y/zeZUnT.net]
どっちでもいいなぁw

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



154 名前:名無し@キムチ [2017/12/27(水) 20:09:12.86 ID:oeXBuupd.net]
>>150
発音のことな

155 名前:フか・
英語でもキャンバスが近いよw
[]
[ここ壊れてます]

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

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

158 名前:名前は開発中のものです。 mailto:sage [2017/12/27(水) 20:26:06.89 ID:4kYoBCMG.net]
>>142-145

レス遅くなりました。mm

dontrestroyしたオブジェクトにアタッチされたスクリプトから
遷移後のオブジェクトがfind出来てるか確認したところ、出来ていませんでした。
上で出来ていると勘違いしたのはfindの時点でエラーが帰ってこなかったからという単純な理由でした。

遷移後のシーン内に作ったオブジェクトのスクリプトから同じコードをコピペしてみましたが
こちらは普通にfind出来ていました
public gameobjectとしてインスペクター上で両方確認しました。

うーん。

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

160 名前:名前は開発中のものです。 mailto:sage [2017/12/27(水) 20:40:05.60 ID:4kYoBCMG.net]
今試したのですが、

objA dontdestroyしたオブジェクト
|   これにアタッチされているスクリプト内でボタン押されたら遷移する処理
|   その遷移処理の後に同スクリプト内の別メソッド@を呼び出して遷移後のobjBをFind →失敗

シーン遷移
   objB
   遷移後のシーンに配置されているボタンから、objAのメソッド@を呼び出す → 成功
                                                     objAのヒエラルキーでobjBが格納されている

だったんですけど、これどういうことなんだろう…

161 名前:名前は開発中のものです。 mailto:sage [2017/12/27(水) 20:43:19.36 ID:4kYoBCMG.net]
>>156だとなんか時系列変に見えますね;

objA dontdestroyしたオブジェクト
|           これにアタッチされているスクリプト内でボタン押されたら遷移する処理
|           

シーン遷移
   objB
            その遷移処理の後に同スクリプト内の別メソッド@を呼び出して遷移後のobjBをFind →失敗

                                        ↑             ↓
   遷移後のシーンに配置されているボタンから、objAのメソッド@を呼び出す     成功
                                                     objAのヒエラルキーでobjBが格納されている

みたいな感じです
こっちのが見づらいかもしれませんが…

162 名前:名前は開発中のものです。 mailto:sage [2017/12/27(水) 20:44:21.74 ID:y/zeZUnT.net]
遷移処理はどこに遷移?
ところどころ足りないので補足よろ。

163 名前:名前は開発中のものです。 mailto:sage [2017/12/27(水) 20:46:34.13 ID:y/zeZUnT.net]
今来たw



164 名前:名前は開発中のものです。 mailto:sage [2017/12/27(水) 20:48:37.38 ID:4kYoBCMG.net]
シーン1
 objA dontdestroyしたオブジェクト
 |           これにアタッチされているスクリプト内でボタン押されたら遷移する処理
 |           
 ↓
シーン2へ遷移
   objB
            その遷移処理の後に同スクリプト内の別メソッド@を呼び出して遷移後のobjBをFind →失敗

                                        ↑             ↓
   遷移後のシーンに配置されているボタンから、objAのメソッド@を呼び出す     成功
                                                     objAのヒエラルキーでobjBが格納されている

これで質問に答えられてますかね?

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

166 名前:名前は開発中のものです。 mailto:sage [2017/12/27(水) 21:17:06.84 ID:fBJY1RTE.net]
>>160
失敗しないし普通に出来る

167 名前:名前は開発中のものです。 mailto:sage [2017/12/27(水) 21:22:17.48 ID:fBJY1RTE.net]
てか、何で相互に見れるようにする必要があるの?
無駄が多すぎるだろ

DontDestroyOnLoadしたGameObjectを一方的に参照する
データ保管庫みたいに切り分けて使えばいいだけじゃない

168 名前:名前は開発中のものです。 mailto:sage [2017/12/27(水) 21:23:12.19 ID:4kYoBCMG.net]
うーん…なんでだろう

またもう一つ試したのですが、

シーン1で objA に加えて objCを作り、
objCにスクリプトをアタッチし、これもdontdestroyして中に変数を一つ入れておきました

シーン1
 objA dontdestroyしたオブジェクト
 |           これにアタッチされているスクリプト内でボタン押されたら遷移する処理
 |           
 ↓
シーン2へ遷移
   objB
            その遷移処理の後に同スクリプト内の別メソッド@を呼び出して遷移後のobjBをFind →失敗
         ※ ここで今回作ったobjCから参照してみる → 成功

                                              ↑        ↓
   遷移後のシーンに配置されているボタンから、objAのメソッド@を呼び出す     成功
                                                     objAのヒエラルキーでobjBが格納されている

と、見づらいかもしれませんが同じシーンから持ってきたオブジェクトに対しては普通にfindもゲットコンポーネントもできました
あああああああああわかんね!!!!!!!!!!!!!

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

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

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

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

173 名前:名前は開発中のものです。 mailto:sage [2017/12/27(水) 22:33:19.52 ID:UZCkhUUp.net]
>>165
シーン遷移時は、前のシーンのオブジェクトを破棄して新たなシーンのオブジェクトを構築する処理が走る
この処理が終わらないと新しいシーンのオブジェクトはFindでは見つからない

よって、新たなシーンのオブジェクトを見つけたければSceneManager.sceneLoadedデリゲートを使ってシーンのロードが完了してから処理を行う必要がある

ちなみにSceneManager.sceneLoadedはロードされたシーンのオブジェクトのAwakeが完了し、Startが呼ばれる前に呼ばれる事に注意
またこのデリゲートはどのシーンがロードされても呼ばれるから処理内でシーン毎に振り分けるかハンドラをつけ外しするなどの対処が必要



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

175 名前:名前は開発中のものです。 mailto:sage [2017/12/27(水) 23:23:24.84 ID:Y6rKayv0.net]
なんだやっぱりキムチか

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

177 名前:名前は開発中のものです。 mailto:sage [2017/12/27(水) 23:56:23.72 ID:2+M/n1Lm.net]
>遷移後のシーンに配置されているボタンから、objAのメソッド@を呼び出す 

本当に呼び出せている?
Find以前の問題だったりして・・・

178 名前:名前は開発中のものです。 mailto:sage [2017/12/28(木) 00:13:29.64 ID:mH5YII84.net]
ボタンからの入力を受けていないだけとかはないですか?
UIから、その該当スクリプトへのコールがかかっていないとか?

入力をInputにして、
if?(Input.GetKeyDown?(KeyCode.Space))?{
 Debug.Log("Input OK");
 GameObject A = GameObject.Find("objA");
 Debug.Log(A);
}
を追加して、
スクリプトが機能しているかどうか、
オブジェクトを取得できているかどうかを確認してみてください

179 名前:名前は開発中のものです。 mailto:sage [2017/12/28(木) 00:18:44.79 ID: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 名前:名前は開発中のものです。 mailto:sage [2017/12/28(木) 00:34:38.37 ID: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 名前:名前は開発中のものです。 mailto:sage [2017/12/28(木) 00:51:12.79 ID:fQL7hUYb.net]
>>169
レス遅れてすみません。
ありがとうございます。
とても参考になり、わかりやすかったです。

結果として、やったことは
SceneManager.LoadSceneの直後にSceneManager.sceneLoadedを行って
そのデリゲート処理完了後にそれぞれのテストメソッドを呼び出して参照したりしたところ
問題なく参照できました。
>>161にはレスしませんでしたが、当たりだった感じです。

>>170
なるほど。。。他の方々のレスを見る感じ、テスト環境でやっていたのかもしれないので
もしかするとオブジェクト等の量とかでかわるんですかね?

>>173
そこは上のレスを書いた時点で確認できていました
debug.log等での確認なので精度はわかりませんが

182 名前:名前は開発中のものです。 mailto:sage [2017/12/28(木) 00:56:34.32 ID: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 名前:名前は開発中のものです。 mailto:sage [2017/12/28(木) 01:23:13.78 ID:GhM3Lpso.net]
デバッガ使えば5分で分かった事を22時間も掛けて
大した効率だよな



184 名前:名前は開発中のものです。 mailto:sage [2017/12/28(木) 01:43:55.44 ID:mH5YII84.net]
以前、物理演算で、どういう処理だったか忘れたけど、
変数を物理演算に設定した直後に、
同じフレーム内でデバッグログに物理演算結果を出力しようとしたら、
変数が設定された結果が出せなくて、
Invokeで1フレーム後にデバッグログを呼び出したら、出力できたことがあるので、

一度フレームを走らせないといけないポイントで処理を連続してしまうのは、
結構ピットホールになりやすいかもしれない

185 名前:名前は開発中のものです。 mailto:sage [2017/12/28(木) 02:14:32.76 ID:mH5YII84.net]
velocityの変更、positionの変更は、同じフレーム内で取得しても変更が反映されるけど、
例えばAddForceでは、たとえ1フレームで加速するForceMode.Impulseでも、
同じフレーム内ではまだvelocityは速度変更されておらず、
次のフレームでvelocityの変更が反映されるみたい

でも、1フレームで移動を行うMovePositionは、
同じフレーム内でpositionの変更が反映されているという・・・

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

187 名前:名前は開発中のものです。 mailto:sage [2017/12/28(木) 02:49:46.90 ID: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 名前:名前は開発中のものです。 mailto:sage [2017/12/28(木) 02:51:19.62 ID:ZI2vMH5M.net]
外様が言うのは何だが
コードも貼られて実に良スレだな

189 名前:名前は開発中のものです。 mailto:sage [2017/12/28(木) 03:22:50.01 ID: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 名前:名前は開発中のものです。 mailto:sage [2017/12/28(木) 03:24:48.63 ID:yHTFG4+0.net]
物理はFixedUpdateのタイムスライスで動いてるから、
Update系とは時間の流れ違うだろ

191 名前:名前は開発中のものです。 mailto:sage [2017/12/28(木) 04:43:29.76 ID:NrJHfHro.net]
>>185
何の確認もせずに適当な思い込みで妄想しても
的外れなだけじゃないキムチ君w
毎回そんなアホな事をやってるから迷走すんだよ

だったらStartとStart2に
Debug.Log(Time.frameCount);
で実実行時のフレームカウント出してみなよ
両方とも1って出るから

192 名前:名前は開発中のものです。 mailto:sage [2017/12/28(木) 07:27:31.37 ID:yfK1iHQW.net]
161最強!w

193 名前:名前は開発中のものです。 mailto: []
[ここ壊れてます]



194 名前: mailto:2017/12/28(木) 09:26:13.89 ID:fukyqugk.net [ 初心者です
マテリアル作って保存したらファイル名が勝手に.matから.MATに変わってそのせいで警告が出てる??みたい
パソコンのせいなんでしょうか
解決方法分かりませんか? ]
[ここ壊れてます]

195 名前:名前は開発中のものです。 mailto:sage [2017/12/28(木) 09:35:07.71 ID:PGevnyVZ.net]
警告文そのものを貼ってください

196 名前:名前は開発中のものです。 [2017/12/28(木) 09:53:48.72 ID: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 名前:名前は開発中のものです。 mailto:sage [2017/12/28(木) 10:09:16.56 ID:ZI2vMH5M.net]
どーせテクスチャをエクスプローラーからコピペして置き換えしたりしてんだろ

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

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

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

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

202 名前:名前は開発中のものです。 [2017/12/28(木) 12:01:44.31 ID:fukyqugk.net]
>>195
ありがとうございます、消してしまった気がします…
こうなった場合の対処法ってどうすれば良いんですか?調べたんですけど「やらないように注意」みたいにしか書いてなくて…

警告文は1回Google翻訳に突っ込んだ時にルー語で翻訳されてキレそうになりましたw
ちゃんと調べてある程度意味はわかりました

203 名前:名前は開発中のものです。 mailto:sage [2017/12/28(木) 12:18:12.10 ID:ghF3Rjv1.net]
>>197
基本的には不要なmetaファイルを消せばいい

metaファイルの中を理解することは大変だけどmetaファイルの存在意義を理解することはそこまで難しくはないと思う
ググればmetaファイルとはなんぞやって記事いっぱいあるからゆっくり読んでみればいい

全部が理解できなくてもいいから色んな記事を読むといい
その過程で色んな知識がつくはず
それを繰り返してればそのうち色んなことに対処できるようになる



204 名前:名前は開発中のものです。 mailto:sage [2017/12/28(木) 12:24:20.51 ID:ghF3Rjv1.net]
>>197
あと警告やエラー文は基本翻訳ソフトに突っ込まないほうがいい
単語の意味を調べる程度にしときな
プログラム上で使われる意味合いと英文としての意味合いが異なって余計に混乱することになることが多いと思う
GUIDみたいな略語なんかは翻訳仕様がないしね

むしろ警告文をそのままググるほうが同じ問題で引っかかった人が解決法とか書いてくれてたりすることもあるからそういうふうに調べたほうがいいよ

205 名前:名前は開発中のものです。 mailto:sage [2017/12/28(木) 12:36:22.53 ID:epGNZdyE.net]
>>185

正確に言うと1フレーム内なんだけど、イベントが呼び出される順番の問題では?

Awake
Start
FixedUpdate
Update
LastUpdate
OnRenderImage
OnGUI
OnDestroy

同じフレーム内でも、Updateの前にFixedUpdateが来るから、
FixedUpdateの処理が1フレーム分先

206 名前:の内容になっているんだと思う []
[ここ壊れてます]

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

208 名前:名前は開発中のものです。 mailto:sage [2017/12/28(木) 12:44:32.49 ID: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 名前:名前は開発中のものです。 mailto:sage [2017/12/28(木) 12:48:38.22 ID:epGNZdyE.net]
実際にやってみると、Debug.Logされる順番は、
@Start
AFixedUpdate
BA
CB
DUpdate
EAA
の順になるので、

@Satrt→BAの間には、FixedUpdateが入っているので、
その間に物理演算の結果が更新されますが、

CB→EAAの間には、FixedUpdateが入らないので、
その間に物理演算の結果は更新されません

210 名前:名前は開発中のものです。 mailto:sage [2017/12/28(木) 12:57:15.87 ID:U/moIC9W.net]
ID:ghF3Rjv1の優しさに勃起した

211 名前:名前は開発中のものです。 mailto:sage [2017/12/28(木) 13:14:29.51 ID:ghF3Rjv1.net]
ホモはお帰りください

212 名前:名前は開発中のものです。 mailto:sage [2017/12/28(木) 13:27:13.50 ID:bdqePp8Y.net]
>>203
アセットを買うのがいいですよ

213 名前:名前は開発中のものです。 mailto:sage [2017/12/28(木) 15:02:55.90 ID:YB1B6aLH.net]
質問者が全部キムチなのが問題だ



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

215 名前:名無し@キムチ [2017/12/28(木) 19:12:09.06 ID:26YsjXJQ.net]
>>177
他のオブジェクトのアクティブのtrueはfalse明らかにオブジェクトの量で変わる。
オブジェクトの量を増やすと、それまでtrueはfalseがちゃんと動いていたものが、動かなくなる。
その行の削除するとまたちゃんと動き出すことから、それは明らか。

それを回避するには、オブジェクトごとにスクリプトをつけてそれに書けばアクティブのtrueはfalseは確実に動く。

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

217 名前:名前は開発中のものです。 mailto:sage [2017/12/28(木) 20:57:02.16 ID:bdqePp8Y.net]
何いってんのこいつw

218 名前:名前は開発中のものです。 [2017/12/28(木) 21:42:51.63 ID:mWenZKXP.net]
NSObjectのNSはNextStepの略だしな

219 名前:名前は開発中のものです。 mailto:sage [2017/12/28(木) 21:51:39.14 ID:VBJfLBcj.net]
NSって。。風俗かよwww

220 名前:名前は開発中のものです。 mailto:sage [2017/12/28(木) 22:22:34.63 ID:epGNZdyE.net]
>>210

物理演算をつけたオブジェクトは、transform命令では動かさない方が良い
同様に、Rigidbody.positionやRigidbody.rotationも極力直接いじらないほうが良い
(なるべく、初期値を設定するだけにしておく)
物理演算をつけたオブジェクトは、原則velocity設定や、
AddForceかAddTorqueで動かさないと、演算に干渉して挙動が不安定になる

221 名前:名前は開発中のものです。 mailto:sage [2017/12/28(木) 23:00:56.25 ID:mH5YII84.net]
>>187 >>200

全部1フレーム内での出来事だったのか

>>186 >>200

呼び出される順序の問題で、物理演算をまたいでしまうと、
その時点で1フレーム分の内容のズレが出ちゃうのが真相か・・・

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

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



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

225 名前:名前は開発中のものです。 mailto:sage [2017/12/30(土) 09:26:09.43 ID:sj8HSsvd.net]
UNITYの定石としては、アセットを買うことですね

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

227 名前:名前は開発中のものです。 mailto:sage [2017/12/30(土) 16:10:37.30 ID:DH75+pHx.net]
>>217
初心者向けに
2D platformerというジャンプアクションゲームのアセット(無料)がある

https://www.assetstore.unity3d.com/jp/#!/content/11228

あとはggれば解説してるとこがあったはず

228 名前:217です mailto:sage [2017/12/30(土) 23:14:59.07 ID:6xEuTupH.net]
この時間しかレスできず、大変すみません。
皆さん、いろいろアドバイス下さり、ありがとうございます。

>>218さん
>>220さん
velocityは直接変えない方がよいんですね。
AddForceでImpuseモードで変更することにしました。

>>219さん
>>221さん
アセットは魅力的に思っていましたが、導入方法が分からなかったのと、
基本有料と思って、二の足を踏んでいました。
無料のジャンプアセットあるのですね。ためになりました。

>>220さん
Character Controllerは3D専用の機能かと思って触っていませんでした。
これから勉強します。

229 名前:名前は開発中のものです。 mailto:sage [2017/12/31(日) 11:58:25.06 ID:YEuDj3bX.net]
物理演算を使って、物理法則に則ったゲームを作成するのか、

物理演算を使って、既存型のゲームを作成するのか、
(コライダーは利用するが、動きは非物理)

物理演算を使わずに、既存型のゲームを作成するのか
(旧来のゲームシステム)

230 名前:名前は開発中のものです。 mailto:sage [2017/12/31(日) 12:40:49.59 ID:YEuDj3bX.net]
positionの直接変更は、コライダーへの衝突計算が乱れる危険性あり

MovePositionによるposition変更は、velocity変更に基づいているので、
比較的安全にコライダーとの衝突計算がなされる

velocity変更を行わずに、全てAddForceで行った方が、
より自然な物理演算になるけど、velocityを0にするのが難しくなる

AddForceでvelocityを0にしようと逆方向に力を与え続けると、
逆向きの加速度がついてしまうので、基本的にはDragで減速せざるを得ない

231 名前:名前は開発中のものです。 mailto:sage [2017/12/31(日) 13:07:55.13 ID: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では使えない

232 名前:名前は開発中のものです。 [2017/12/31(日) 18:15:19.74 ID:/rN76OKL.net]
簡単にお金が稼げる方法興味ある人だけ見てください。

グーグル検索⇒『来島のモノノリウエ』

WQFIUEMH6C

233 名前:名前は開発中のものです。 mailto:sage [2018/01/01(月) 00:44:27.66 ID:j7kcIBAU.net]
斜面に球を置いたとき、コロコロと転がっていくか、転がらずに滑っていくかは、摩擦設定で変わるのですか?



234 名前:名前は開発中のものです。 mailto:sage [2018/01/01(月) 01:03:03.11 ID:6abiTkqK.net]
変わるよ
ただし物理計算のタイムアウトも関係してくる
一定時間経過するとタイムアウトになり何か刺激がくるまで動かなくなる

235 名前:名前は開発中のものです。 mailto:sage [2018/01/01(月) 12:16:58.00 ID:ljD1K3gw.net]
IsTouchingLayersをつけたbox型のコライダーを足元に付けておけば、
足元だけで地面のレイヤーとの接地判定できるよ

キャラクタ全体をIsTouchingにしちゃうと、
横のブロックに触れただけでも接地に判定されちゃうから・・・
(逆に、壁登りや三角飛びするなら、これでもよいけど)

236 名前:名前は開発中のものです。 mailto:sage [2018/01/01(月) 12:30:50.04 ID:ljD1K3gw.net]
>>225
LineCastは判定線の長さが限られているから、直下だけの判定できるけど、
RayCastだと判定線の長さが伸びるから、下方向(距離無関係)の判定になっちゃうよ

>>224
1フレームで見れば、velocityの直接変更も、AddForce(Impulse)も同じだけど、
velocityの直接変更は、ボタン押下中、毎フレーム呼び出されても同じ値が代入されるのに対して、
AddForce(Impulse)は、ボタン押下中、毎フレーム呼び出されて加算されてどんどん加速するからね

AddForceで、gravityと同じ値で逆方向に加速すると、重力が相殺されて、速度が保存されるよ

237 名前:名前は開発中のものです。 mailto:sage [2018/01/01(月) 12:32:16.63 ID:PNv1Z/iK.net]
なぜ皆さんはこんな無駄なことに時間を費やすのか?
アセットを買えばすぐに解決するのに

238 名前:名前は開発中のものです。 mailto:sage [2018/01/01(月) 15:25:49.26 ID:ljD1K3gw.net]
>>217
ちなみに、自分の場合は、2Dでジャンプ機能を実装する際は、

Startでint t = 100,float v = 1.0fをセット

Updateでボタン入力と接地を監視
@入力あり
 t >= 0なら、Jump()へ飛んで、その後にt = t -1
A入力なし
 接地ありなら、t = 100へ
 接地なしなら、t = 0へ

Jump()
 t = 100なら、AddForce(mass * v * Vector2.up, ForceMode2D.Impulse)
 そうでない場合は、AddForce (mass * (t/100) * (- Physics2D.gravity))

最初のフレームで上向き初速v = 1.0をつけておき、
次のフレームからは重力加速度の相殺を線形的に減じていき、
t = 100フレームで重力加速度の相殺が消える仕組み

ボタン入力がない場合は、接地時はt = 100に戻して、
非接地時はt = 0をセットして連続での再ジャンプを防止

239 名前:名前は開発中のものです。 mailto:sage [2018/01/01(月) 15:36:55.88 ID:ljD1K3gw.net]
接地判定は、足元に別コライダーを接地しておいて、IsTouchingLayersでも良いけど、

Startで、public LayerMask layerを宣言して、layerに地面のレイヤーを指定しておき、

キャラクタの足元に、縦厚みd×横幅x-dの判定枠を作って、
V2center = position - (キャラの縦サイズy/2) * Vector2.up
V2size = new Vecto2(キャラの横サイズx - d, d)

if (Physics2D.OverlapBox(V2center, V2size, 0, layer) == true)で
layer = 地面のレイヤーとの接地判定すると、コライダーを追加する必要はなくなるよ

240 名前:名前は開発中のものです。 mailto:sage [2018/01/01(月) 18:00:56.88 ID:j7kcIBAU.net]
>>228

変わるんですね

unityは、静止摩擦係数、動摩擦係数とか、滑り摩擦、転がり摩擦とかも設定できるんですか?

241 名前:名前は開発中のものです。 mailto:sage [2018/01/01(月) 18:03:03.31 ID:j7kcIBAU.net]
Debug.DrawLineだと、Lineしか引けないんですけど、

Boxを描画したり、Circleを描画したりしたいんですけど、どうすれば良いんでしょうか?

242 名前:名前は開発中のものです。 mailto:sage [2018/01/01(月) 18:45:59.90 ID:6abiTkqK.net]
静止摩擦係数、動摩擦係数だけです

243 名前:名前は開発中のものです。 mailto:sage [2018/01/01(月) 20:01:42.78 ID:j7kcIBAU.net]
>>236

摩擦係数は2種類設定できるんですね!



244 名前:名前は開発中のものです。 mailto:sage [2018/01/01(月) 20:58:09.99 ID:Ep+lOIal.net]
>>235
cube作るなりplane作るなりすればいいんじゃないの?

245 名前:名前は開発中のものです。 mailto:sage [2018/01/01(月) 21:03:34.71 ID:yWvNMSX7.net]
アセットガイジ死ねや






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<307KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef