[過去ログ] 【3Dゲームエンジン】Unity質問スレッド33 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
151: 名無し@キムチ 2017/12/27(水)20:09 ID:oeXBuupd(1/2) AAS
>>150
発音のことなのか・
英語でもキャンバスが近いよw
152: 2017/12/27(水)20:12 ID:9tGAk59e(2/3) AAS
別にどっちでも良いしどっちでも伝わるけど喋るときはどっちが多いのかなぁっていう素朴な疑問
ネイティブの発音はどうでも良い、カタカナ表記することが云々って話になるし
153: 2017/12/27(水)20:15 ID:Ojr+yz4V(1) AAS
>>136
できる/努力する奴ひっぱり下ろすのはゲスすぎないか
俺もわかんないまま借りてるけどどっか後ろめたいよ
154: 2017/12/27(水)20:26 ID:4kYoBCMG(4/10) AAS
>>142-145
レス遅くなりました。mm
dontrestroyしたオブジェクトにアタッチされたスクリプトから
遷移後のオブジェクトがfind出来てるか確認したところ、出来ていませんでした。
上で出来ていると勘違いしたのはfindの時点でエラーが帰ってこなかったからという単純な理由でした。
遷移後のシーン内に作ったオブジェクトのスクリプトから同じコードをコピペしてみましたが
こちらは普通にfind出来ていました
省2
155: 2017/12/27(水)20:36 ID:JxfZYfQR(1) AAS
香港人
「高卒だらけの日本人英語は、無いところにYの発音が入っちゃいます。土人丸出しです。」
156(1): 2017/12/27(水)20:40 ID:4kYoBCMG(5/10) AAS
AA省
157: 2017/12/27(水)20:43 ID:4kYoBCMG(6/10) AAS
AA省
158: 2017/12/27(水)20:44 ID:y/zeZUnT(3/5) AAS
遷移処理はどこに遷移?
ところどころ足りないので補足よろ。
159: 2017/12/27(水)20:46 ID:y/zeZUnT(4/5) AAS
今来たw
160(1): 2017/12/27(水)20:48 ID:4kYoBCMG(7/10) AAS
AA省
161(1): 2017/12/27(水)21:03 ID:y/zeZUnT(5/5) AAS
遷移したあとの間が少ないとか。トンチンカンかw
162: 2017/12/27(水)21:17 ID:fBJY1RTE(3/6) AAS
>>160
失敗しないし普通に出来る
163(1): 2017/12/27(水)21:22 ID:fBJY1RTE(4/6) AAS
てか、何で相互に見れるようにする必要があるの?
無駄が多すぎるだろ
DontDestroyOnLoadしたGameObjectを一方的に参照する
データ保管庫みたいに切り分けて使えばいいだけじゃない
164(1): 2017/12/27(水)21:23 ID:4kYoBCMG(8/10) AAS
AA省
165(1): 2017/12/27(水)21:26 ID:4kYoBCMG(9/10) AAS
>>163
遷移後にそのまま冒頭のイベント処理みたいなことをやりたくて
ならそのまま遷移処理の後に引き続きそのメソッド内である程度指示だして引継ぎすればよくね?
でやってみたら遷移後のシーンのオブジェクト参照ができなかったということから質問をしました
166: 2017/12/27(水)21:33 ID:fBJY1RTE(5/6) AAS
値の保持に使ってるんじゃないのかよ
何の意味があるんだそれ
167: 2017/12/27(水)21:39 ID:4kYoBCMG(10/10) AAS
上でも書いてるのですけど本来の目的はそれですが
試してみたところエラーが出たので質問をした ということです
168: 2017/12/27(水)21:48 ID:fBJY1RTE(6/6) AAS
objAを外から読み書きできるようにしたんだよね?
なんでobjAからobjBを見る必要があるのか分からない(出来るけど)
169(2): 2017/12/27(水)22:33 ID:UZCkhUUp(1) AAS
>>165
シーン遷移時は、前のシーンのオブジェクトを破棄して新たなシーンのオブジェクトを構築する処理が走る
この処理が終わらないと新しいシーンのオブジェクトはFindでは見つからない
よって、新たなシーンのオブジェクトを見つけたければSceneManager.sceneLoadedデリゲートを使ってシーンのロードが完了してから処理を行う必要がある
ちなみにSceneManager.sceneLoadedはロードされたシーンのオブジェクトのAwakeが完了し、Startが呼ばれる前に呼ばれる事に注意
またこのデリゲートはどのシーンがロードされても呼ばれるから処理内でシーン毎に振り分けるかハンドラをつけ外しするなどの対処が必要
170(1): 名無し@キムチ 2017/12/27(水)22:59 ID:oeXBuupd(2/2) AAS
>>164
遷移後のobjBをFind →失敗
当方の経験ではFindは、そのオブジェクトにアタッチされているスクリプトからでないと、失敗したり成功したりその時々によってさまざまだな。
171: 2017/12/27(水)23:23 ID:Y6rKayv0(1) AAS
なんだやっぱりキムチか
172: 2017/12/27(水)23:29 ID:9tGAk59e(3/3) AAS
プログラムが成功したり失敗したりなんて挙動するわけない
成功するのも失敗するのも理由がある
理由を理解できていないのにプログラムのせいにするプログラマー
173(1): 2017/12/27(水)23:56 ID:2+M/n1Lm(4/4) AAS
>遷移後のシーンに配置されているボタンから、objAのメソッド@を呼び出す
本当に呼び出せている?
Find以前の問題だったりして・・・
174(1): 2017/12/28(木)00:13 ID:mH5YII84(1/8) AAS
ボタンからの入力を受けていないだけとかはないですか?
UIから、その該当スクリプトへのコールがかかっていないとか?
入力をInputにして、
if?(Input.GetKeyDown?(KeyCode.Space))?{
Debug.Log("Input OK");
GameObject A = GameObject.Find("objA");
Debug.Log(A);
省4
175(1): 2017/12/28(木)00:18 ID:mH5YII84(2/8) AAS
すみません、objAからobjBの方を見たいんですね
objAのスクリプトのUpdate()内に、
if (Input.GetKeyDown (KeyCode.Space)) {
Debug.Log("Input OK");
GameObject B = GameObject.Find("objB");
Debug.Log(B);
}
省9
176(1): 2017/12/28(木)00:34 ID:mH5YII84(3/8) AAS
各オブジェクトのそれぞれのスクリプトで行っていることが良く分からないのですが、
Scene1
objA-A.cs:DontDestory
ボタン→LoadScene("Scene1")
objC-C.cs:DontDestory
↓
Scene2
省11
177(1): 2017/12/28(木)00:51 ID:fQL7hUYb(1/2) AAS
>>169
レス遅れてすみません。
ありがとうございます。
とても参考になり、わかりやすかったです。
結果として、やったことは
SceneManager.LoadSceneの直後にSceneManager.sceneLoadedを行って
そのデリゲート処理完了後にそれぞれのテストメソッドを呼び出して参照したりしたところ
省8
178: 2017/12/28(木)00:56 ID:fQL7hUYb(2/2) AAS
>>174-176
Scene1
objA-A.cs:DontDestory
ボタン→ *A.cs内の LoadScene("Scene1") 呼び出し
objC-C.cs:DontDestory * +変数1
↓
Scene2
省15
179: 2017/12/28(木)01:23 ID:GhM3Lpso(1) AAS
デバッガ使えば5分で分かった事を22時間も掛けて
大した効率だよな
180: 2017/12/28(木)01:43 ID:mH5YII84(4/8) AAS
以前、物理演算で、どういう処理だったか忘れたけど、
変数を物理演算に設定した直後に、
同じフレーム内でデバッグログに物理演算結果を出力しようとしたら、
変数が設定された結果が出せなくて、
Invokeで1フレーム後にデバッグログを呼び出したら、出力できたことがあるので、
一度フレームを走らせないといけないポイントで処理を連続してしまうのは、
結構ピットホールになりやすいかもしれない
181: 2017/12/28(木)02:14 ID:mH5YII84(5/8) AAS
velocityの変更、positionの変更は、同じフレーム内で取得しても変更が反映されるけど、
例えばAddForceでは、たとえ1フレームで加速するForceMode.Impulseでも、
同じフレーム内ではまだvelocityは速度変更されておらず、
次のフレームでvelocityの変更が反映されるみたい
でも、1フレームで移動を行うMovePositionは、
同じフレーム内でpositionの変更が反映されているという・・・
182: 2017/12/28(木)02:20 ID:aEDu9yFW(1) AAS
全然関係ねえよ
オブジェクトの生成と破壊は1フレーム掛かるから後処理は1フレーム待てと言われただろ
シーンの呼び出しも同じって>169に言われてんだろ
183: 2017/12/28(木)02:49 ID:mH5YII84(6/8) AAS
Invokeに1フレームかかるのか、1フレーム内で行う処理の量の問題なのか、
PCの性能の違いなのか、Unityのバージョンの違いなのかは不明だけど、
Rigidbody rb;
void Start() {
rb = GetComponent<Rigidbody>();
rb.angularVelocity = new Vector3(0, 0, 180 * Mathf.Deg2Rad);
Invoke ("Log", 1);
省11
184: 2017/12/28(木)02:51 ID:ZI2vMH5M(1/2) AAS
外様が言うのは何だが
コードも貼られて実に良スレだな
185(2): 2017/12/28(木)03:22 ID:mH5YII84(7/8) AAS
ごめんなさい、原因が分かったよ
Start()から、Log()を呼んでいるからでした・・・
Start()が終了するのに1フレームかかるみたいですね
Rigidbody rb;
void Start() {
rb = GetComponent<Rigidbody>();
Start2()
省12
186(1): 2017/12/28(木)03:24 ID:yHTFG4+0(1) AAS
物理はFixedUpdateのタイムスライスで動いてるから、
Update系とは時間の流れ違うだろ
187(1): 2017/12/28(木)04:43 ID:NrJHfHro(1) AAS
>>185
何の確認もせずに適当な思い込みで妄想しても
的外れなだけじゃないキムチ君w
毎回そんなアホな事をやってるから迷走すんだよ
だったらStartとStart2に
Debug.Log(Time.frameCount);
で実実行時のフレームカウント出してみなよ
省1
188: 2017/12/28(木)07:27 ID:yfK1iHQW(1) AAS
161最強!w
189(1): 2017/12/28(木)09:26 ID:fukyqugk(1/5) AAS
初心者です
マテリアル作って保存したらファイル名が勝手に.matから.MATに変わってそのせいで警告が出てる??みたい
パソコンのせいなんでしょうか
解決方法分かりませんか?
190: 2017/12/28(木)09:35 ID:PGevnyVZ(1) AAS
警告文そのものを貼ってください
191: 2017/12/28(木)09:53 ID:fukyqugk(2/5) AAS
警告で
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
です
192(1): 2017/12/28(木)10:09 ID:ZI2vMH5M(2/2) AAS
どーせテクスチャをエクスプローラーからコピペして置き換えしたりしてんだろ
193: 2017/12/28(木)10:24 ID:o+JGejkD(1) AAS
>>189
君みたいな雑魚にUnityは使いこなせません
10年webで下積みしてから出直してきなさい
194(1): 2017/12/28(木)10:45 ID:fukyqugk(3/5) AAS
>>192
いえ、普通にUnityエディタ内でmaterialを作成してます
で真っ白なまま保存しても.matで保存されるんですが少しでも色を変えると保存した時に拡張子が.MATに変わってしまうんです
195(1): 2017/12/28(木)11:13 ID:ghF3Rjv1(1/5) AAS
>>194
ファイル消したりしてるでしょ
元ファイル消したのにmetaファイル消してないから名前が使えない
だから別の名前使うね、ってなってる
生成も削除も移動も全てuntiy上で行ってください
196: 2017/12/28(木)11:16 ID:ghF3Rjv1(2/5) AAS
てか警告分の内容は理解してる?
中学英語の単語しか無いぞ
英語だからって毛嫌いせず読もうとしてみるの大事
だんだん慣れてくるから
197(2): 2017/12/28(木)12:01 ID:fukyqugk(4/5) AAS
>>195
ありがとうございます、消してしまった気がします…
こうなった場合の対処法ってどうすれば良いんですか?調べたんですけど「やらないように注意」みたいにしか書いてなくて…
警告文は1回Google翻訳に突っ込んだ時にルー語で翻訳されてキレそうになりましたw
ちゃんと調べてある程度意味はわかりました
198(1): 2017/12/28(木)12:18 ID:ghF3Rjv1(3/5) AAS
>>197
基本的には不要なmetaファイルを消せばいい
metaファイルの中を理解することは大変だけどmetaファイルの存在意義を理解することはそこまで難しくはないと思う
ググればmetaファイルとはなんぞやって記事いっぱいあるからゆっくり読んでみればいい
全部が理解できなくてもいいから色んな記事を読むといい
その過程で色んな知識がつくはず
それを繰り返してればそのうち色んなことに対処できるようになる
199(1): 2017/12/28(木)12:24 ID:ghF3Rjv1(4/5) AAS
>>197
あと警告やエラー文は基本翻訳ソフトに突っ込まないほうがいい
単語の意味を調べる程度にしときな
プログラム上で使われる意味合いと英文としての意味合いが異なって余計に混乱することになることが多いと思う
GUIDみたいな略語なんかは翻訳仕様がないしね
むしろ警告文をそのままググるほうが同じ問題で引っかかった人が解決法とか書いてくれてたりすることもあるからそういうふうに調べたほうがいいよ
200(1): 2017/12/28(木)12:36 ID:epGNZdyE(1/4) AAS
>>185
正確に言うと1フレーム内なんだけど、イベントが呼び出される順番の問題では?
Awake
Start
FixedUpdate
Update
LastUpdate
省5
201: 2017/12/28(木)12:43 ID:fukyqugk(5/5) AAS
>>198
>>199
わかりました、また調べてみます
色々とご教示ありがとうございました
202: 2017/12/28(木)12:44 ID:epGNZdyE(2/4) AAS
Start:
Debug.Log
Invoke A 0秒
Invoke B 0秒
FixedUpdate:
Debug.Log
Update:
省10
203(1): 2017/12/28(木)12:48 ID:epGNZdyE(3/4) AAS
実際にやってみると、Debug.Logされる順番は、
@Start
AFixedUpdate
BA
CB
DUpdate
EAA
省5
204: 2017/12/28(木)12:57 ID:U/moIC9W(1) AAS
ID:ghF3Rjv1の優しさに勃起した
205: 2017/12/28(木)13:14 ID:ghF3Rjv1(5/5) AAS
ホモはお帰りください
206: 2017/12/28(木)13:27 ID:bdqePp8Y(1/2) AAS
>>203
アセットを買うのがいいですよ
207: 2017/12/28(木)15:02 ID:YB1B6aLH(1) AAS
質問者が全部キムチなのが問題だ
208: 2017/12/28(木)15:24 ID:tnUbOHhI(1) AAS
何もない所で誰も引っ掛からない孔明の罠に引っ掛かって
大騒ぎするのがキムチ
209: 名無し@キムチ 2017/12/28(木)19:12 ID:26YsjXJQ(1/2) AAS
>>177
他のオブジェクトのアクティブのtrueはfalse明らかにオブジェクトの量で変わる。
オブジェクトの量を増やすと、それまでtrueはfalseがちゃんと動いていたものが、動かなくなる。
その行の削除するとまたちゃんと動き出すことから、それは明らか。
それを回避するには、オブジェクトごとにスクリプトをつけてそれに書けばアクティブのtrueはfalseは確実に動く。
210(1): 名無し@キムチ 2017/12/28(木)20:33 ID:26YsjXJQ(2/2) AAS
最近わかったんだが、Unityでは基本あるオブジェクトにつけたスクリプトから他のオブジェクトを動かしてはいけないんですね。
あくまでもそのオブジェクトにだけ関するスクリプトであるということ。
MonoBehaviorの「Mono」とはそういう意味なんですね。
211: 2017/12/28(木)20:57 ID:bdqePp8Y(2/2) AAS
何いってんのこいつw
212: 2017/12/28(木)21:42 ID:mWenZKXP(1) AAS
NSObjectのNSはNextStepの略だしな
213: 2017/12/28(木)21:51 ID:VBJfLBcj(1) AAS
NSって。。風俗かよwww
214(1): 2017/12/28(木)22:22 ID:epGNZdyE(4/4) AAS
>>210
物理演算をつけたオブジェクトは、transform命令では動かさない方が良い
同様に、Rigidbody.positionやRigidbody.rotationも極力直接いじらないほうが良い
(なるべく、初期値を設定するだけにしておく)
物理演算をつけたオブジェクトは、原則velocity設定や、
AddForceかAddTorqueで動かさないと、演算に干渉して挙動が不安定になる
215: 2017/12/28(木)23:00 ID:mH5YII84(8/8) AAS
>>187 >>200
全部1フレーム内での出来事だったのか
>>186 >>200
呼び出される順序の問題で、物理演算をまたいでしまうと、
その時点で1フレーム分の内容のズレが出ちゃうのが真相か・・・
216: 2017/12/29(金)09:19 ID:K0u5BC7r(1) AAS
>>214
それはワープになるからな
MovePosition使えば大丈夫だよ
217(2): 2017/12/29(金)23:42 ID:qixlPtWp(1) AAS
初心者です。
2Dでジャンプアクションゲームを物理演算で製作中です。
ようやく左右への移動ができるようになったところです。
(Input.GetAxisをvelocityに代入しています)
ジャンプの際に、お聞きしたい事があるのですが、
まず地面に接している判定をどうするのか、
ジャンプはvelocity変更でよいのか、AddForceの方がよいのか、
省4
218(1): 2017/12/30(土)00:35 ID:5n68sL0m(1) AAS
AddForceの方がいいよ、単純にジャンプだけだったら変わんないかもしれないけど他の動作と重なったときに融通がきかなくなる
設置してるかどうかはコリジョンを見れば良いんだよ
ジャンプ系の処理は定石化してるから、Youtubeでしっかり頭に叩き込んだほうが良いよ
数値の上限については、ちゃんとC#らしい書き方ができるといいね
219(1): 2017/12/30(土)09:26 ID:sj8HSsvd(1) AAS
UNITYの定石としては、アセットを買うことですね
220(1): 2017/12/30(土)14:20 ID:LpYIXbLi(1) AAS
"物理演算"でやるならVelocityは基本使っちゃだめよ
物理演算を無視した移動だから見た目が物理っぽくなくなるよ
キャラの操作制御はInput.GetAxisでもいいがCharacter Controllerを使えばisGroundというパラメーターで地面との接点判定できるよ
221(1): 2017/12/30(土)16:10 ID:DH75+pHx(1) AAS
>>217
初心者向けに
2D platformerというジャンプアクションゲームのアセット(無料)がある
外部リンク:www.assetstore.unity3d.com
あとはggれば解説してるとこがあったはず
222: 217です 2017/12/30(土)23:14 ID:6xEuTupH(1) AAS
この時間しかレスできず、大変すみません。
皆さん、いろいろアドバイス下さり、ありがとうございます。
>>218さん
>>220さん
velocityは直接変えない方がよいんですね。
AddForceでImpuseモードで変更することにしました。
>>219さん
省7
223: 2017/12/31(日)11:58 ID:YEuDj3bX(1/3) AAS
物理演算を使って、物理法則に則ったゲームを作成するのか、
物理演算を使って、既存型のゲームを作成するのか、
(コライダーは利用するが、動きは非物理)
物理演算を使わずに、既存型のゲームを作成するのか
(旧来のゲームシステム)
224(1): 2017/12/31(日)12:40 ID:YEuDj3bX(2/3) AAS
positionの直接変更は、コライダーへの衝突計算が乱れる危険性あり
MovePositionによるposition変更は、velocity変更に基づいているので、
比較的安全にコライダーとの衝突計算がなされる
velocity変更を行わずに、全てAddForceで行った方が、
より自然な物理演算になるけど、velocityを0にするのが難しくなる
AddForceでvelocityを0にしようと逆方向に力を与え続けると、
逆向きの加速度がついてしまうので、基本的にはDragで減速せざるを得ない
225(1): 2017/12/31(日)13:07 ID:YEuDj3bX(3/3) AAS
2Dで地面との接触判定を行うのであれば、
・IsTouching,IsTouchingLayers
他のコライダーやレイヤーとの接触を検出する方法
(全方向からの接触を検出してしまう)
・Physics2D.OverlapArea,Physics2D.OverlapBox
配置した矩形が接触したコライダーを検出する方法
(OverlapAreaとOverlapBoxは矩形の設定方法が異なる)
省10
226: 2017/12/31(日)18:15 ID:/rN76OKL(1) AAS
簡単にお金が稼げる方法興味ある人だけ見てください。
グーグル検索⇒『来島のモノノリウエ』
WQFIUEMH6C
227: 2018/01/01(月)00:44 ID:j7kcIBAU(1/6) AAS
斜面に球を置いたとき、コロコロと転がっていくか、転がらずに滑っていくかは、摩擦設定で変わるのですか?
228(1): 2018/01/01(月)01:03 ID:6abiTkqK(1/2) AAS
変わるよ
ただし物理計算のタイムアウトも関係してくる
一定時間経過するとタイムアウトになり何か刺激がくるまで動かなくなる
229: 2018/01/01(月)12:16 ID:ljD1K3gw(1/4) AAS
IsTouchingLayersをつけたbox型のコライダーを足元に付けておけば、
足元だけで地面のレイヤーとの接地判定できるよ
キャラクタ全体をIsTouchingにしちゃうと、
横のブロックに触れただけでも接地に判定されちゃうから・・・
(逆に、壁登りや三角飛びするなら、これでもよいけど)
230: 2018/01/01(月)12:30 ID:ljD1K3gw(2/4) AAS
>>225
LineCastは判定線の長さが限られているから、直下だけの判定できるけど、
RayCastだと判定線の長さが伸びるから、下方向(距離無関係)の判定になっちゃうよ
>>224
1フレームで見れば、velocityの直接変更も、AddForce(Impulse)も同じだけど、
velocityの直接変更は、ボタン押下中、毎フレーム呼び出されても同じ値が代入されるのに対して、
AddForce(Impulse)は、ボタン押下中、毎フレーム呼び出されて加算されてどんどん加速するからね
省1
231: 2018/01/01(月)12:32 ID:PNv1Z/iK(1) AAS
なぜ皆さんはこんな無駄なことに時間を費やすのか?
アセットを買えばすぐに解決するのに
上下前次1-新書関写板覧索設栞歴
あと 771 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.024s