[過去ログ]
【ゲームエンジン】Unity初心者質問スレBuild3 (1002レス)
【ゲームエンジン】Unity初心者質問スレBuild3 http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
1: 名前は開発中のものです。 [sage] 2020/01/11(土) 14:28:59 ID:wPvGtAaQ ゲームエンジンUnityを楽しむ初心者による初心者の為のスレ その為「アセットを購入しましょう」「チュートリアルやれ」「ググレカス」等禁止 初心者が親身になって初心者に教える。 又ググレの場合、何のキーワードでググるのか書いてね ●リンク ・Unity(日本公式サイト) http://unity3d.com/jp ・マニュアル http://docs.unity3d.com/ja/current/Manual/index.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←スクリプトのエラー番号をこれで検索すると原因が日本語で出てきます。 ※前スレ 【ゲームエンジン】Unity初心者質問スレBuild2 https://mevius.5ch.net/test/read.cgi/gamedev/1557293737/ http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/1
2: ダーク王鍬大使 ◆SoVpkB15jY [sage] 2020/01/11(土) 15:14:33 ID:HCTv2Y3e 質問イイでふか?(^^ 変数の配列って宣言するときに要素数も決めなきゃいけないのでひょうか?(^^ あとから一つずつ足していくみたいな形に出来ないと困りまんこ(^^ http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/2
3: ダーク王鍬大使 ◆SoVpkB15jY [sage] 2020/01/11(土) 15:16:42 ID:HCTv2Y3e ああ、List使えばいいんでふね…(^^ http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/3
4: 名前は開発中のものです。 [] 2020/01/11(土) 15:27:22 ID:GoAReVTm >>2 List 楽ですよね Array なら再定義で 配列 再定義で色々でます http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/4
5: 名前は開発中のものです。 [sage] 2020/01/11(土) 15:43:20 ID:wPvGtAaQ 前スレ995で質問した者です アドバイスを元に、parentをnullにしてみると生成されたプレハブがキャンバス外なのか描写されなくなってしまいました 続いて生成後に新しく作成したキャンバスに親を変更すると実行後1回目だけ左端の意図しない位置にプレハブが生成され、その後通常に動作しました その後も色々試したのですがまだうまく行きません あとは ・先に位置を取得して新しいキャンバスにプレハブを生成(これだと頂いたアドバイスを活かせませんが・・・) ・デス
トロイ前に敵のイメージを透明にする くらいしか思いつかないです やりたい事はオブジェクトAの上にオブジェクトBを重ねて表示、Aが消えてもBは消えないという動作です どうかアドバイスをお願いします http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/5
6: 名前は開発中のものです。 [] 2020/01/11(土) 15:59:21 ID:1/8GPuaw >>5 aのワールドポスとってBの生成時にそれをセットすればいいだけじゃ?parentとかやると話ややこしくなる http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/6
7: 名前は開発中のものです。 [sage] 2020/01/11(土) 16:16:16 ID:wPvGtAaQ >>6 レスありがとうございます 一度ポジションを取得する方法も自分なりにやってみたのですが、instantiateで取得したポジションを指定する方法がわかりませんでした、、 その時VisualStudioではvector3をtransformに変換することは出来ませんといったような警告がでてしまったいたと思います new vector3を手書きで入力する事は出来るのですが、オブジェクトAの位置をposAに代入、それをInstantiateの引数に記述して反映させる方法がわかりません Instantiate(プ
レハブ,posA)の様に書く方法はあるのでしょうか? http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/7
8: 名前は開発中のものです。 [sage] 2020/01/11(土) 16:17:01 ID:ftB0znZP >>5 カンバスオブジェにテキストを貼ったプレハブじゃなかったのか。すまん。 そのプレハブにカンバス入れて生成しては? なら、親外しても良いはず。 http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/8
9: 名前は開発中のものです。 [sage] 2020/01/11(土) 16:19:56 ID:joHWbw4j >>5 Destroy前に透明にしておくのがわりと定石っぽいと思う どうせ破壊時にSEとか演出入れる場合即Destroyはできなくなるし 数が増えてくるとDestroyしてInstantiateしてってやってると思ってるより重くなっちゃうのでしっかりプーリングするのを覚えるといいことづくめよ http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/9
10: 名前は開発中のものです。 [sage] 2020/01/11(土) 16:27:37 ID:wPvGtAaQ >>8 なるほど、キャンバスをMainViewと名付けてその中に全てのオブジェクトを置いていたのでキャンバスごとプレハブにするのは思いつきませんでした、試してみます ありがとうございます >>9 たしかに今の動作が実装できたら今度は破壊アニメーションの終了後に〜と言うのを調べようと思っていたので透明化が定石なのであれば一石二鳥かもしれませんね ゲーム作りもプログラミングも初めてなのでプーリングと言うのはなんの事かわかりませんが調べてみ
ます ありがとうございます http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/10
11: 名前は開発中のものです。 [sage] 2020/01/11(土) 16:35:55 ID:eNMw2FnY >>7 敵とダメージをuGUIに置いているとして、やりたいことをベタ書きするならこんな感じ var enemy = 敵.GetComponent<Transform>(); var canvas = enemy.GetComponentInParent<Canvas>(); var damage = Instantiate(ダメージプレハブ, canvas.transform) as GameObject; damage.transform.position = enemy.position; http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/11
12: 名前は開発中のものです。 [sage] 2020/01/11(土) 17:08:22 ID:wPvGtAaQ >>11 出来ました!ありがとうございます この処理でも最初の一回が左端に表示されてしまったのですが、実行を押した瞬間に攻撃していたので処理が間に合わない(バグ?)みたいで、戦闘のスタートとストップボタンをつけて実行後すぐに戦闘開始しない様にしてみたら正常に動作しました テキストを好きな位置に生成するという単純な事で半日使ってしまいましたが良い勉強になりました、ありがとうございました http://mevius.5ch.net/test/read.cgi/gamedev/1578720
539/12
13: 名前は開発中のものです。 [] 2020/01/11(土) 17:10:44 ID:GoAReVTm >>10 あぁもし破壊後→破壊アニメ、 その間にダメージが出て文字が大きくなりながら上に上がる んで終了とかなら、アニメで終了時に関数呼ぶのがいいかと思います http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/13
14: 名前は開発中のものです。 [] 2020/01/11(土) 17:12:42 ID:GoAReVTm >>12 プレファブをhide状態で作っておいて、生成してからhide解除するという方法でいけるかもですね http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/14
15: 名前は開発中のものです。 [sage] 2020/01/12(日) 21:58:52 ID:6ETev4FX Lerp() と Slerp() で滑らかにオブジェクトを回転させたいんだけど、FixedUpdate() 内で使ったら、 それらの回転の終了を知るにはどうするんだろう? FixedUpdate() 内であるタイミングで滑らかに回転してから次の処理を走らせたい。 そもそも 連続するフレーム内での Lerp() と Slerp() の使い方がわからない。 初心者サイト見ても、FixedUpdate() 内で動的に開始と終了ベクトルを指定するサンプルとかがない。 実践的にはどう使うの? それとも UniRXとか使うの? h
ttp://mevius.5ch.net/test/read.cgi/gamedev/1578720539/15
16: 名前は開発中のものです。 [] 2020/01/12(日) 22:05:48 ID:GUfBc0Nv >>15 【Unity入門】LerpとSlerpの使い方と違い!自在に補間をかけよう https://www.sejuku.net/blog/83510 公式 https://docs.unity3d.com/ja/current/ScriptReference/Vector3.Lerp.html 読んだ上での質問なのかな? あ所でオブジェクト移動にfixed 使うのは何故? http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/16
17: 名前は開発中のものです。 [sage] 2020/01/12(日) 22:23:31 ID:6ETev4FX >>16 さっそくありがとう。 fixed は勘違いで、今処理を書いてるのは Update() だった… 教えてもらったリンクを見たけど、どうやら自分の要件に Lerp() とか Slerp() は適してないかな。 今悩んでた実装は、初代PSのトゥームレイダーみたいにプレイヤーがブロックを押したり、または持ち上げたりするところだけど、 プレイヤーがブロックに対して斜めだと、後々の制御が難しいから、一旦ブロックを押したり、持ち上げたりする正しいポジションに 滑らかに移動・回
転させてから、ブロックを押したり、持ち上げたりする動作に移ろうとしてた。 というか、この通り実装すればいいだけか。 http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/17
18: 名前は開発中のものです。 [sage] 2020/01/13(月) 08:38:58 ID:QiViT9Gr Quaternion が難しすぎて滑らか回転の独自実装は無理だった… ので Update() の中で Lerp を使うことにしたけど、 Lerp の終了判定はどうするの? ※speedは適当 // Z軸正方向 transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.Euler(0, 0, 0), speed * Time.deltaTime); // Z軸負方向 transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.Euler(0, 180, 0), speed * Time.deltaTime); // X軸正方向 transform.rotation = Quate
rnion.Lerp(transform.rotation, Quaternion.Euler(0, 90, 0), speed * Time.deltaTime); // X軸負方向 transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.Euler(0, 270, 0), speed * Time.deltaTime); 上記の四つの処理の回転の終了判定が、それぞれ取りたい。 ちなみに以下では取れなかった。 // Z軸正方向 transform.rotation == Quaternion.Euler(0, 0, 0); // Z軸負方向 transform.rotation == Quaternion.Euler(0, 180, 0); // X軸正方向 transform.rotation == Quaternion.Euler(0, 90, 0); // X軸負方向 transform.
rotation == Quaternion.Euler(0, 270, 0); http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/18
19: 名前は開発中のものです。 [] 2020/01/13(月) 10:48:51 ID:Rcgjsxsv >>18 終了条件は何なんだ? x軸だけまず考えてみよう 何度回転したら止まるのかな? http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/19
20: 名前は開発中のものです。 [sage] 2020/01/13(月) 11:04:47 ID:QiViT9Gr >>19 終了条件は Quaternion Lerp (Quaternion from, Quaternion to, float t); from が to に達した時が終了条件。 Z軸正・負方向、X軸正・負方向の4方向で頼む。 初心者サイトではたいてい "解説された軸の条件" だけでは動くが、実践ではまるで使えない。 単純な話だよ、"プレイヤーを東西南北の方向に滑らかに正対させる" そして、正対する動作が完了してから、次の動作を開始させたい。 この処理が聞きたいだけ。 http://mevius.5ch.net
/test/read.cgi/gamedev/1578720539/20
21: 名前は開発中のものです。 [] 2020/01/13(月) 11:46:21 ID:Rcgjsxsv https://i.gyazo.com/60305b50083eeabb48e95021ff3d925d.png これ見て理解して 単純にLerpの事理解してないと思うけど、Time.deltaTime という浮動小数点を使っている以上90度にはならない 最後のprint文表示すると分かるけど永遠と89.xxxxxと表示される インスペクタは省略表示だからそれに惑わされないように それから同じオブジェクトで複数軸の回転を行うと当然ながら「Quaternion.Euler(0, 90, 0)」では取れないのは分かるよね? http://mevius.5ch.net/test/read.cgi/
gamedev/1578720539/21
22: 名前は開発中のものです。 [] 2020/01/13(月) 11:52:55 ID:eGNaRuP0 Lerpの終了条件って、別にLerpは発動したらずっと動く何かじゃないぞ? たんに0-1のあいだでfrom,toの間の補完をしてくれるだけだぞ? お前が次に進めるんだよ! http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/22
23: 名前は開発中のものです。 [] 2020/01/13(月) 11:54:05 ID:Rcgjsxsv あ、あとStartに書いたのは Mathf.Approximately(transform.rotation.eulerAngles.y , 90f) これやりたかったので 一応こちらでも判定は行けると思う http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/23
24: 名前は開発中のものです。 [] 2020/01/13(月) 11:56:44 ID:Rcgjsxsv >>22 だからその上にも書いたけど、浮動小数点をステップに浸かってるからずっとToまでやる訳ですよ http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/24
25: 名前は開発中のものです。 [sage] 2020/01/13(月) 12:15:46 ID:QiViT9Gr >>21 素晴らしい! 教えてもらった方法で自分がやりたいことが完全に出来た! 4個処理を書いてたのは、プレイヤーがブロックのどの方向に接触したかで、 処理を分岐させる為で、同時に処理するわけではなかった。申し訳ない。 いや、マジでありがとう。本当に理解している人から教えてもらえて、すごく助かった。 http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/25
26: 名前は開発中のものです。 [sage] 2020/01/13(月) 13:00:01 ID:auL79zSW >>21 単純にUnityのこと理解してないと思うんだけど 現在位置からターゲットに向ける用途的にはLerpでなくTowards使うんだぜ transform.position = Vector3.MoveTowards(transform.position, target.position, moveSpeed * Time.deltaTime); if(transform.position == target.position) // 移動完了処理 transform.rotation = Quaternion.RotateTowards(transform.rotation, target.rotation, rotSpeed * Time.deltaTime); if(transform.rotation == target.rotati
on) // 回転完了処理 http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/26
27: 名前は開発中のものです。 [] 2020/01/13(月) 13:52:22 ID:Rcgjsxsv >>26 ターゲットあるならLookat の方が全然いいんだぜ って、なやり方なんか色々あるのやで 初心者スレなのよここ http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/27
28: 名前は開発中のものです。 [sage] 2020/01/13(月) 15:25:54 ID:6zyx93de (補間を求めているところにLookAt……?) http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/28
29: 名前は開発中のものです。 [sage] 2020/01/13(月) 16:28:41 ID:yBWGUThF まぁ、本人が満足してるからOKだね。 http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/29
30: 名前は開発中のものです。 [] 2020/01/13(月) 16:29:23 ID:Rcgjsxsv (ターゲットに向ける用途的に) (って、読めないのかなぁ) http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/30
31: 名前は開発中のものです。 [sage] 2020/01/13(月) 16:36:47 ID:auL79zSW (どう見ても移動と回転の補間としてMoveTowardsまで書いてるのにLookAtって言っちゃう人って…) って、ごめんマジで教えて LookAtで座標移動できたっけ? なんでこの流れでLookAtが出て来るのか分からんぞ http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/31
32: 名前は開発中のものです。 [sage] 2020/01/13(月) 16:37:27 ID:QiViT9Gr そもそもの質問がターゲットを追うじゃなくて、 "プレイヤーを東西南北の方向に滑らかに正対させる" だよ。 で、>>21 の方法で求める処理が実装出来た、サンキュー! http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/32
33: 名前は開発中のものです。 [sage] 2020/01/13(月) 17:04:23 ID:QiViT9Gr >>26 は質問の意味が理解できなかったんだね。スマンスマン。 "プレイヤーを東西南北の方向に滑らかに正対させる" なので、Lerp が正解だ、RotateTowards では希望の動作にならない。 しかし皆ありがとう。理解するのにとても助けになった。 http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/33
34: 名前は開発中のものです。 [sage] 2020/01/13(月) 17:31:10 ID:6zyx93de (あ、これ一人で質問して一人で回答してる系の痛い奴だ……前も見たことある) http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/34
35: 名前は開発中のものです。 [] 2020/01/13(月) 17:40:43 ID:Rcgjsxsv ほんと、答え書けないのにそう言うこと書くとか、何かの病気なんだろうね 可哀想に http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/35
36: 名前は開発中のものです。 [sage] 2020/01/13(月) 18:11:33 ID:auL79zSW 初心者に不正解扱いされて笑った つまりレベル下げて書くとこういうことだろ? transform.rotation = Quaternion.RotateTowards(transform.rotation, Quaternion.Euler(0, 90, 0), speed * Time.deltaTime); if(transform.rotation == Quaternion.Euler(0, 90, 0)) // 処理 >>18の Lerp を RotateTowards に置き換えればそのまま動くんだよ それをターゲットがあるとか無いとか初心者ならともかくドヤ顔でレスしてるID:Rcgjsxsvが言い出すのは素人感出し過ぎだぜ
まあ初心者が答えるスレっぽくて俺は嫌いじゃないが http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/36
37: 名前は開発中のものです。 [sage] 2020/01/13(月) 18:42:06 ID:QiViT9Gr >>36 ん? それでは動かないぞ。今試した。 >>21 の方法なら動いたけどな、確かに>>21の言う通り浮動小数点を理解出来てないっぽいね。 自分は Unity初心者で、初心者スレで訪ねてるんだから、>>21 のように、 わざわざコードを自分で書いて、動くか試してから教えてくれる人に本当に感謝したい。 まあ、間違って動かないコードもそれなりに参考になるからサンキュー! http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/37
38: 名前は開発中のものです。 [] 2020/01/13(月) 18:50:34 ID:Rcgjsxsv ドヤ顔でレスかぁ 前スレからの糖衣構文君思い出したわ http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/38
39: 名前は開発中のものです。 [sage] 2020/01/13(月) 18:59:30 ID:QiViT9Gr まず >>26 で ID:auL79zSW が "現在位置からターゲットに向ける用途的にはLerpでなくTowards使うんだぜ" と言ってるのが、>>15 からの質問の文脈を無視してるね。 で、>>27 で ID:Rcgjsxsv が ”ターゲットあるならLookat の方が全然いいんだぜ” と言っているのは >>26 でターゲットと出てきたからだ。人の話を聞いてそれに反応してるんだよね。 でも、ドヤ顔して教えてくれて全然かまわないんだ。Unity初心者でも参考になる情報とそ
うではない情報の区別はつくから。 というか、自分の質問で争いになって申し訳ない気持ちだ。皆さんどうもありがとう。 http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/39
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 963 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.012s