1 名前:名前は開発中のものです。 mailto:sage [2020/01/11(土) 14:28:59.18 ID:wPvGtAaQ.net] ゲームエンジンUnityを楽しむ初心者による初心者の為のスレ その為「アセットを購入しましょう」「チュートリアルやれ」「ググレカス」等禁止 初心者が親身になって初心者に教える。 又ググレの場合、何のキーワードでググるのか書いてね ●リンク ・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 ←スクリプトのエラー番号をこれで検索すると原因が日本語で出てきます。 ※前スレ 【ゲームエンジン】Unity初心者質問スレBuild2 https://mevius.5ch.net/test/read.cgi/gamedev/1557293737/
10 名前:名前は開発中のものです。 mailto:sage [2020/01/11(土) 16:27:37.00 ID:wPvGtAaQ.net] >>8 なるほど、キャンバスをMainViewと名付けてその中に全てのオブジェクトを置いていたのでキャンバスごとプレハブにするのは思いつきませんでした、試してみます ありがとうございます >>9 たしかに今の動作が実装できたら今度は破壊アニメーションの終了後に〜と言うのを調べようと思っていたので透明化が定石なのであれば一石二鳥かもしれませんね ゲーム作りもプログラミングも初めてなのでプーリングと言うのはなんの事かわかりませんが調べてみます ありがとうございます
11 名前:名前は開発中のものです。 mailto:sage [2020/01/11(土) 16:35:55.39 ID:eNMw2FnY.net] >>7 敵とダメージをuGUIに置いているとして、やりたいことをベタ書きするならこんな感じ var enemy = 敵.GetComponent<Transform>(); var canvas = enemy.GetComponentInParent<Canvas>(); var damage = Instantiate(ダメージプレハブ, canvas.transform) as GameObject; damage.transform.position = enemy.position;
12 名前:名前は開発中のものです。 mailto:sage [2020/01/11(土) 17:08:22.23 ID:wPvGtAaQ.net] >>11 出来ました!ありがとうございます この処理でも最初の一回が左端に表示されてしまったのですが、実行を押した瞬間に攻撃していたので処理が間に合わない(バグ?)みたいで、戦闘のスタートとストップボタンをつけて実行後すぐに戦闘開始しない様にしてみたら正常に動作しました テキストを好きな位置に生成するという単純な事で半日使ってしまいましたが良い勉強になりました、ありがとうございました
13 名前:名前は開発中のものです。 [2020/01/11(土) 17:10:44.69 ID:GoAReVTm.net] >>10 あぁもし破壊後→破壊アニメ、 その間にダメージが出て文字が大きくなりながら上に上がる んで終了とかなら、アニメで終了時に関数呼ぶのがいいかと思います
14 名前:名前は開発中のものです。 [2020/01/11(土) 17:12:42.45 ID:GoAReVTm.net] >>12 プレファブをhide状態で作っておいて、生成してからhide解除するという方法でいけるかもですね
15 名前:名前は開発中のものです。 mailto:sage [2020/01/12(日) 21:58:52.24 ID:6ETev4FX.net] Lerp() と Slerp() で滑らかにオブジェクトを回転させたいんだけど、FixedUpdate() 内で使ったら、 それらの回転の終了を知るにはどうするんだろう? FixedUpdate() 内であるタイミングで滑らかに回転してから次の処理を走らせたい。 そもそも 連続するフレーム内での Lerp() と Slerp() の使い方がわからない。 初心者サイト見ても、FixedUpdate() 内で動的に開始と終了ベクトルを指定するサンプルとかがない。 実践的にはどう使うの? それとも UniRXとか使うの?
16 名前:名前は開発中のものです。 [2020/01/12(日) 22:05:48.90 ID:GUfBc0Nv.net] >>15 【Unity入門】LerpとSlerpの使い方と違い!自在に補間をかけよう https://www.sejuku.net/blog/83510 公式 https://docs.unity3d.com/ja/current/ScriptReference/Vector3.Lerp.html 読んだ上での質問なのかな? あ所でオブジェクト移動にfixed 使うのは何故?
17 名前:名前は開発中のものです。 mailto:sage [2020/01/12(日) 22:23:31.75 ID:6ETev4FX.net] >>16 さっそくありがとう。 fixed は勘違いで、今処理を書いてるのは Update() だった… 教えてもらったリンクを見たけど、どうやら自分の要件に Lerp() とか Slerp() は適してないかな。 今悩んでた実装は、初代PSのトゥームレイダーみたいにプレイヤーがブロックを押したり、または持ち上げたりするところだけど、 プレイヤーがブロックに対して斜めだと、後々の制御が難しいから、一旦ブロックを押したり、持ち上げたりする正しいポジションに 滑らかに移動・回転させてから、ブロックを押したり、持ち上げたりする動作に移ろうとしてた。 というか、この通り実装すればいいだけか。
18 名前:名前は開発中のものです。 mailto:sage [2020/01/13(月) 08:38:58.13 ID:QiViT9Gr.net] 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 = Quaternion.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);
19 名前:名前は開発中のものです。 [2020/01/13(月) 10:48:51.44 ID:Rcgjsxsv.net] >>18 終了条件は何なんだ? x軸だけまず考えてみよう 何度回転したら止まるのかな?
20 名前:名前は開発中のものです。 mailto:sage [2020/01/13(月) 11:04:47.55 ID:QiViT9Gr.net] >>19 終了条件は Quaternion Lerp (Quaternion from, Quaternion to, float t); from が to に達した時が終了条件。 Z軸正・負方向、X軸正・負方向の4方向で頼む。 初心者サイトではたいてい "解説された軸の条件" だけでは動くが、実践ではまるで使えない。 単純な話だよ、"プレイヤーを東西南北の方向に滑らかに正対させる" そして、正対する動作が完了してから、次の動作を開始させたい。 この処理が聞きたいだけ。
21 名前:名前は開発中のものです。 [2020/01/13(月) 11:46:21.42 ID:Rcgjsxsv.net] https://i.gyazo.com/60305b50083eeabb48e95021ff3d925d.png これ見て理解して 単純にLerpの事理解してないと思うけど、Time.deltaTime という浮動小数点を使っている以上90度にはならない 最後のprint文表示すると分かるけど永遠と89.xxxxxと表示される インスペクタは省略表示だからそれに惑わされないように それから同じオブジェクトで複数軸の回転を行うと当然ながら「Quaternion.Euler(0, 90, 0)」では取れないのは分かるよね?
22 名前:名前は開発中のものです。 [2020/01/13(月) 11:52:55.77 ID:eGNaRuP0.net] Lerpの終了条件って、別にLerpは発動したらずっと動く何かじゃないぞ? たんに0-1のあいだでfrom,toの間の補完をしてくれるだけだぞ? お前が次に進めるんだよ!
23 名前:名前は開発中のものです。 [2020/01/13(月) 11:54:05.76 ID:Rcgjsxsv.net] あ、あとStartに書いたのは Mathf.Approximately(transform.rotation.eulerAngles.y , 90f) これやりたかったので 一応こちらでも判定は行けると思う
24 名前:名前は開発中のものです。 [2020/01/13(月) 11:56:44.83 ID:Rcgjsxsv.net] >>22 だからその上にも書いたけど、浮動小数点をステップに浸かってるからずっとToまでやる訳ですよ
25 名前:名前は開発中のものです。 mailto:sage [2020/01/13(月) 12:15:46.59 ID:QiViT9Gr.net] >>21 素晴らしい! 教えてもらった方法で自分がやりたいことが完全に出来た! 4個処理を書いてたのは、プレイヤーがブロックのどの方向に接触したかで、 処理を分岐させる為で、同時に処理するわけではなかった。申し訳ない。 いや、マジでありがとう。本当に理解している人から教えてもらえて、すごく助かった。
26 名前:名前は開発中のものです。 mailto:sage [2020/01/13(月) 13:00:01.95 ID:auL79zSW.net] >>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.rotation) // 回転完了処理
27 名前:名前は開発中のものです。 [2020/01/13(月) 13:52:22.60 ID:Rcgjsxsv.net] >>26 ターゲットあるならLookat の方が全然いいんだぜ って、なやり方なんか色々あるのやで 初心者スレなのよここ
28 名前:名前は開発中のものです。 mailto:sage [2020/01/13(月) 15:25:54.10 ID:6zyx93de.net] (補間を求めているところにLookAt……?)
29 名前:名前は開発中のものです。 mailto:sage [2020/01/13(月) 16:28:41.18 ID:yBWGUThF.net] まぁ、本人が満足してるからOKだね。
30 名前:名前は開発中のものです。 [2020/01/13(月) 16:29:23.93 ID:Rcgjsxsv.net] (ターゲットに向ける用途的に) (って、読めないのかなぁ)
31 名前:名前は開発中のものです。 mailto:sage [2020/01/13(月) 16:36:47.43 ID:auL79zSW.net] (どう見ても移動と回転の補間としてMoveTowardsまで書いてるのにLookAtって言っちゃう人って…) って、ごめんマジで教えて LookAtで座標移動できたっけ? なんでこの流れでLookAtが出て来るのか分からんぞ
32 名前:名前は開発中のものです。 mailto:sage [2020/01/13(月) 16:37:27.12 ID:QiViT9Gr.net] そもそもの質問がターゲットを追うじゃなくて、 "プレイヤーを東西南北の方向に滑らかに正対させる" だよ。 で、>>21 の方法で求める処理が実装出来た、サンキュー!
33 名前:名前は開発中のものです。 mailto:sage [2020/01/13(月) 17:04:23.60 ID:QiViT9Gr.net] >>26 は質問の意味が理解できなかったんだね。スマンスマン。 "プレイヤーを東西南北の方向に滑らかに正対させる" なので、Lerp が正解だ、RotateTowards では希望の動作にならない。 しかし皆ありがとう。理解するのにとても助けになった。
34 名前:名前は開発中のものです。 mailto:sage [2020/01/13(月) 17:31:10.04 ID:6zyx93de.net] (あ、これ一人で質問して一人で回答してる系の痛い奴だ……前も見たことある)
35 名前:名前は開発中のものです。 [2020/01/13(月) 17:40:43.99 ID:Rcgjsxsv.net] ほんと、答え書けないのにそう言うこと書くとか、何かの病気なんだろうね 可哀想に
36 名前:名前は開発中のものです。 mailto:sage [2020/01/13(月) 18:11:33.42 ID:auL79zSW.net] 初心者に不正解扱いされて笑った つまりレベル下げて書くとこういうことだろ? 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が言い出すのは素人感出し過ぎだぜ まあ初心者が答えるスレっぽくて俺は嫌いじゃないが
37 名前:名前は開発中のものです。 mailto:sage [2020/01/13(月) 18:42:06.51 ID:QiViT9Gr.net] >>36 ん? それでは動かないぞ。今試した。 >>21 の方法なら動いたけどな、確かに>>21 の言う通り浮動小数点を理解出来てないっぽいね。 自分は Unity初心者で、初心者スレで訪ねてるんだから、>>21 のように、 わざわざコードを自分で書いて、動くか試してから教えてくれる人に本当に感謝したい。 まあ、間違って動かないコードもそれなりに参考になるからサンキュー!
38 名前:名前は開発中のものです。 [2020/01/13(月) 18:50:34.00 ID:Rcgjsxsv.net] ドヤ顔でレスかぁ 前スレからの糖衣構文君思い出したわ
39 名前:名前は開発中のものです。 mailto:sage [2020/01/13(月) 18:59:30.16 ID:QiViT9Gr.net] まず >>26 で ID:auL79zSW が "現在位置からターゲットに向ける用途的にはLerpでなくTowards使うんだぜ" と言ってるのが、>>15 からの質問の文脈を無視してるね。 で、>>27 で ID:Rcgjsxsv が ”ターゲットあるならLookat の方が全然いいんだぜ” と言っているのは >>26 でターゲットと出てきたからだ。人の話を聞いてそれに反応してるんだよね。 でも、ドヤ顔して教えてくれて全然かまわないんだ。Unity初心者でも参考になる情報とそうではない情報の区別はつくから。 というか、自分の質問で争いになって申し訳ない気持ちだ。皆さんどうもありがとう。
40 名前:名前は開発中のものです。 [2020/01/13(月) 19:46:20.54 ID:eGNaRuP0.net] >>38 ああお前勘違いLINQ理解君?
41 名前:名前は開発中のものです。 mailto:sage [2020/01/13(月) 20:01:23.35 ID:6zyx93de.net] Lerp勘違い理解君か 初心者スレが魔境過ぎて中級者の俺には付いてけない
42 名前:名前は開発中のものです。 mailto:sage [2020/01/13(月) 20:15:44.52 ID:QiViT9Gr.net] 質問スレなんで、質問に対する解決策の提案が出来なければ、誰にも感謝されないよ。 仮に、提案が間違っていても問題ない。一緒に考えてくれることがとてもありがたい。 教えてくれて本当にありがとう。
43 名前:名前は開発中のものです。 mailto:sage [2020/01/13(月) 21:07:35.13 ID:auL79zSW.net] 物知り顔でドヤってる>>21 があまりにも愚かだったから突っ込んだだけで感謝とかそういうのは別に求めてない ……というかてめえには一言足りとも語りかけちゃいないのになんでお前がいちいち答えるんだよ、構ってちゃんかよ
44 名前:名前は開発中のものです。 [2020/01/13(月) 21:09:46.43 ID:Rcgjsxsv.net] >>41 自称中級者なのになんで初心者スレきたの? 寂しいの? 書かないと死ぬ病気なの? 構ってほしいのかな? なら雑談スレいけやぼけ
45 名前:名前は開発中のものです。 [2020/01/13(月) 21:11:21.23 ID:Rcgjsxsv.net] >>43 だから糖衣構文君は雑談スレで勘違いして暴れていいよ ほんと動かないコード書いて恥ずかしくないのかね
46 名前:名前は開発中のものです。 mailto:sage [2020/01/13(月) 21:32:16.53 ID:QiViT9Gr.net] 質問いいかな? マリオ64+初代トゥームレイダーみたいな3Dアクション作ってるんだけど、 スマホ画面のバーチャルボタンでの二つボタン同時押しがきつい。 例えば、Bダッシュジャンプ(※B押しながらAでジャンプ)とかが出来ない。 そこで物理コントローラでの操作はそのままで、例えばスマホ画面の バーチャルコントローラだけ、Bボタンを "離す入力" を遅延させることは出来ないかな? 例えばスマホではBボタンを離しても、0.5秒は押したままで判定されて、その隙にAボタンを押すみたいな。 スクリプト内では以下でコントローラの入力を取ってる。 UnityEngine.InputSystem.Controls.ButtonControl 自分が思いつくのは拡張メソッドとか? スマホ判定したら、特定のボタンの wasReleasedThisFrame が来たら、何とかして遅延実行させるとか?
47 名前:名前は開発中のものです。 [2020/01/13(月) 21:46:07.74 ID:Rcgjsxsv.net] >>46 さーせん自分インプットシステムようわからんので ここは自称中級者君と糖衣構文君が動くコード書いて説明してれることを祈る
48 名前:名前は開発中のものです。 mailto:sage [2020/01/13(月) 22:06:33.65 ID:QiViT9Gr.net] >>47 いえいえ、いつもありがとう。 スクリプトでは例えば以下のように書いてるけど(※例えばYボタン) if (yButton.wasReleasedThisFrame) { // 処理 } 物理コントローラー接続時とスクリプトを変えたくないとしたら、 yButton.wasReleasedThisFrame の前に処理をインターセプト出来て、 本来の wasReleasedThisFrame が来たら 10フレ遅らせて wasReleasedThisFrame を発火させるとか。 なら、UnityEngine.InputSystem.Controls.ButtonControl を継承した自作クラスを作るとか? そんな入力イベントをバッファ出来る自作ボタンコントロールクラスとか出来るのかな?
49 名前:名前は開発中のものです。 mailto:sage [2020/01/13(月) 22:39:53.81 ID:QiViT9Gr.net] とりあえず進捗 以下のようなクラスの継承では動かなかった。 public class BufferButtonControl : ButtonControl { // 処理を書く予定だった } 無理やりキャストして ButtonControl 型の変数に突っ込もうとしたが、Unity で実行時エラーが出た。 yButton = (BufferButtonControl ) Gamepad.current.yButton; しかし拡張メソッドは動いた。 public static bool WasReleasedThisFrame(this ButtonControl self) { Debug.Log("Hack!"); return self.wasReleasedThisFrame; } あとはこの中にスマホで物理コントローラ接続無しなら、10フレ程度バッファする処理を書けば… って、どう書くんだろう?
50 名前:名前は開発中のものです。 mailto:sage [2020/01/13(月) 22:40:12.07 ID:yBWGUThF.net] そんな処理より、操作変えた方がいいよ。 ボタン二つを管理するのかな?と思ったけどそうじゃなくて遅延させるのはちょっと… どうしてもやりたいなら、タッチマネージャーを頭から作るのが必要かと。
51 名前:名前は開発中のものです。 mailto:sage [2020/01/13(月) 22:42:52.88 ID:6zyx93de.net] ここまでの内容をまとめると 怒涛の連レスするID:RcgjsxsvはID:QiViT9Grと同一人物で 前スレで何か悔しいことがあってたまらないから自分で質問して自分で解答して 感謝されてる素晴らしい僕を見せつけたいとそんな感じか どれだけ承認欲求拗らせるとこうなるんだろう
52 名前:名前は開発中のものです。 mailto:sage [2020/01/13(月) 23:13:16.61 ID:QiViT9Gr.net] >>50 アドバイスありがとう。 タッチマネージャーを自作が良さげでいいのかな。 うーん、もともと ”このゲームは必ず物理コントローラを接続して下さいキリッ!” っていこうとしてたけど、 流石にそんな物理コントローラ用意するコアな人達は1%もいないと思い、スマホ画面上にボタン表示して自分で 動作テストしたけど、当然とても操作が難しかった。 でも、自分的にはスマホ的なタッチ操作はまだ考えてなくて、あくまでスーパーファミコン的な操作でやりたいと思ってる。 で、ボタンを離す動作の遅延処理を思いついたという流れ。 上に書いたように拡張メソッド自体は動くので、何とかバッファ処理出来ないかなと… スマホ画面でBダッシュジャンプを実装したいなあ…
53 名前:名前は開発中のものです。 mailto:sage [2020/01/13(月) 23:43:09.48 ID:yBWGUThF.net] 指がaボタンの位置にきたらジャンプでいいのでは? @b押しっぱなしからスライドa領域 Aa領域タッチ
54 名前:名前は開発中のものです。 mailto:sage [2020/01/13(月) 23:54:48.93 ID:wx103lZP.net] >>52 実装はとてつもなく簡単だがお前には絶対に理解出来ないから諦めろ 生成したInputActionに登録するコールバックでフラグ立ててコンテキスト見ながらUpdate内でポーリングとか言われても分かんないだろ? これが超基本的なInputSystemの使い方なのに生の値取って処理しようとしてるレガシーなお前にはまず不可能なんだよ
55 名前:名前は開発中のものです。 mailto:sage [2020/01/14(火) 00:08:41.92 ID:TgWjNKx2.net] 入力バッファの為のInputSystemでバッファ取る為にサブクラス作るって最高に馬鹿げてるけど、Upフラグキャプチャして0.5秒後に消すだけのことが自分で分からないならぶっちゃけ何言っても伝わらないと思う IQは20違うと話が通じないって言われてるんだよのび太君
56 名前:名前は開発中のものです。 [2020/01/14(火) 01:54:57.74 ID:s+JbO9cF.net] >>45 いいからお前はSelectMany挟んだ時の動作イメージ書けよ。逃げてんじゃねーぞ
57 名前:名前は開発中のものです。 mailto:sage [2020/01/14(火) 07:50:43.51 ID:Sje8YI9U.net] >>53 なるほど、でも "ボタン" で実装するのが要件なんだ。 >>54 , 55 とりあえず、ありがとう。調べてみるわ。
58 名前:名前は開発中のものです。 mailto:sage [2020/01/14(火) 07:58:18.64 ID:d/PuqDsL.net] >>56 (自分が先に書いて見せればそれで論破が成立するのにそれをしない……つまりはあれか、自身の知らない答えを煽って引き出そうとする伝統のあれか……)
59 名前:名前は開発中のものです。 [2020/01/14(火) 10:53:05.74 ID:s+JbO9cF.net] >>58 こっちはIEnumが連続するって話で終わってんだが LINQ勘違い君はWhere限定の最適化方法や関係ないLINQ使用箇所のIL上げてほらループネストしてないだろドヤっ!とかWhereは要素そのもの返すだとか 間違いや勘違いだらけのこと並べ立てて俺はLINQよく知ってるって勘違いしまくってるんだけどよくアレで他からツッコミ入らないのか不思議でならないんだが
60 名前:名前は開発中のものです。 mailto:sage [2020/01/14(火) 11:03:25.28 ID:Sje8YI9U.net] Bダッシュジャンプの挙動は UniRX の Observable で実装出来た。 InputSystem.Controls.ButtonControl や、InputSystem.OnScreen.OnScreenButton 辺りで 色と試したけど、スクリプトの中でボタンを押したことにしても、希望の動作にならかかったので、 UniRX で、ダッシュボダンを離しても nフレ後までは最高速ジャンプ出来るように実装した。 あとアドバイスの内容で、ああこの人は "物理ゲームパッド用のゲーム" を開発したことない人だなと分かるようになった。 UnityEngine.InputSystem.Gamepad とかのことね。 でも出来たんでサンキュー!
61 名前:名前は開発中のものです。 mailto:sage [2020/01/14(火) 11:42:59.26 ID:Sje8YI9U.net] というか、Unity初心者の自分が言うのもなんだが UniRx 便利だわ。 実務の C#案件では LINQ は自然につかうが、Rx まではあんま必要なかった。 まあ、Unity でも LINQ で処理する必要性があったら使おうと思うけどね。 それとも、Unity では UniRx はOKで、LINQ はダメなの? どして?
62 名前:名前は開発中のものです。 mailto:sage [2020/01/14(火) 12:56:12.43 ID:GDy6IxVO.net] >>59 がLINQに詳しいみたいだから聞いてみたらどうだろう IEnumとか想像上のIF?持ち出してるあたりあんまり分かってないみたいだけど
63 名前:名前は開発中のものです。 mailto:sage [2020/01/14(火) 13:02:53.66 ID:FSjVa/a9.net] >>60 おはようございます出来たそうでよかったです、もう必要ないかもしれないけど ちょっと自分も>>46 の要件をやってみました頭の体操になりましたので参考までに よければ、こんな画面でuiのbuttonコンポーネントに画像付けてみまして https://i.gyazo.com/832eccb23ff5882fd4bb0330ef2b5a81.png Aボタンの遅延を実装してみました https://i.gyazo.com/004bb73967d71daa88863b17b949e305.png プログラムではボタンを離してから2秒後まで押下中と判断しています 単純に押下の判定を2つ、ボタン押しているか?フラグが立っているかです で離した後Invokeでフラグを解除しています RaycastAllとか勉強になりましたよ
64 名前:名前は開発中のものです。 [2020/01/14(火) 13:04:43.50 ID:A84mTdZ6.net] >>62 めんどくさいから省略してるぐらいわかんだろほんとアホなの?
65 名前:名前は開発中のものです。 mailto:sage [2020/01/14(火) 13:04:50.47 ID:d/PuqDsL.net] >>59 ふーん で、ソースは? まさか脳内ソースとか言わないよな
66 名前:名前は開発中のものです。 mailto:sage [2020/01/14(火) 13:08:41.41 ID:GDy6IxVO.net] >>64 IEnumeratorとIEnumerableのどっちのつもり?
67 名前:名前は開発中のものです。 [2020/01/14(火) 13:38:07.43 ID:FSjVa/a9.net] 雑談スレでゆっくり心行くまでやってけれ
68 名前:名前は開発中のものです。 [2020/01/14(火) 13:49:13.98 ID:A84mTdZ6.net] >>65 .NETのソース見ろよボケ >>66 流石に端折りすぎだったなすまそ。bleの方
69 名前:名前は開発中のものです。 mailto:sage [2020/01/14(火) 14:03:25.38 ID:d/PuqDsL.net] うーん、ここまでソース無し やっぱり>>58 で言ったように煽って解答訊き出したい教えて君か
70 名前:名前は開発中のものです。 mailto:sage [2020/01/14(火) 14:13:57.18 ID:d/PuqDsL.net] >>68 「.NETのソース見ろよボケ(わかんないからソース探してわかりやすくぼくに教えて!)」 確かゆとり世代が使ってた手口だっけ おっさんこんな昼間っから何してるん?
71 名前:名前は開発中のものです。 [2020/01/14(火) 14:16:56.94 ID:A84mTdZ6.net] ソースも何もLINQ、IEnumerable数珠つなぎなんでパフォーマンスの劣化多少あるかもね?って話でforeachの展開一つだけだからいくら繋げても劣化ねーよとか言い出したアホが出してくるもの全部的はずれだったりWhere特化の最適化の話だったり、 間違えてるよ?って諭しても俺は間違ってない(具体的な反論なし)って言い張るだけ。別にもう聞きたいことないからまあどうでもいいよ。つか勘違いLINQ君の言ってること鵜呑みにしてるんだったらお前やべえぞ? https://docs.microsoft.com/ja-jp/dotnet/api/system.linq.enumerable.where https://docs.microsoft.com/ja-jp/dotnet/api/system.linq.enumerable.selectmany
72 名前:名前は開発中のものです。 [2020/01/14(火) 14:17:47.26 ID:A84mTdZ6.net] >>70 もう聞きたい事なんかねーよwアホか
73 名前:名前は開発中のものです。 mailto:sage [2020/01/14(火) 14:21:57.86 ID:d/PuqDsL.net] >>71-72 お、自己解決したの? 良かったじゃん これも全部俺が発破掛けてやったおかげだな
74 名前:名前は開発中のものです。 mailto:sage [2020/01/14(火) 14:51:50.74 ID:GDy6IxVO.net] >>71 つまるところforeachは遅くてGCゴミが発生するからforを使おうっていうのと同種のことを言いたいの?
75 名前:名前は開発中のものです。 [2020/01/14(火) 15:28:52.59 ID:A84mTdZ6.net] >>74 いや元々は誰かがLINQ、Unityでは今でも使わん方がいいんだっけ?とか言ってきたのでIEnumerableの数珠つなぎになるから多少なりパフォーマンス劣化はあるのかもね?って話したらforeachの展開はひとつだから劣化なんかねーよとか言い出してきたのが最初。 自分的にはIEnumerableの連鎖がパフォーマンス劣化に関係するのかは確かめてないしで知らんけど、とりあえずそいつが言ってるforeachはひとつだから劣化はありえないとか言ってるのがいや色々間違ってるだろって言いたいだけだよ
76 名前:名前は開発中のものです。 mailto:sage [2020/01/14(火) 15:49:25.00 ID:GDy6IxVO.net] なんだ、コンパイラのことも分かってない初心者か
77 名前:名前は開発中のものです。 mailto:sage [2020/01/14(火) 16:43:42.20 ID:1kzoRmok.net] コンパイラーV!
78 名前:名前は開発中のものです。 [2020/01/14(火) 18:05:03.70 ID:FSjVa/a9.net] ほらあふぉばかりだろだから次スレ要らなかったんだよ
79 名前:名前は開発中のものです。 mailto:sage [2020/01/14(火) 19:07:42.80 ID:ZrDQOmlZ.net] unity 2019.2のプロジェクトにUnity Recorderのアセットインストールしたらプロジェクトが破損した バックアップ取ってたから良かったけど こういう事あるんだな… あとで2019からUnity Recorderはpackagemanegerでインストールするんだと知った
80 名前:名前は開発中のものです。 mailto:sage [2020/01/14(火) 19:40:09.55 ID:/EhPGLH9.net] カードゲームをUnityで作りたいのですが、 カードゲームの作り方の実例が乗っている本ってありませんでしょうか?
81 名前:名前は開発中のものです。 [2020/01/14(火) 19:59:09.56 ID:A84mTdZ6.net] >>76 コンパイラーでそんなLINQ最適化されるならそれは是非教えて欲しいところだわ
82 名前:名前は開発中のものです。 [2020/01/14(火) 21:30:54.82 ID:FSjVa/a9.net] >>79 で、どんな質問なの? >>80 unity カードゲームで検索するといっぱいでてくるけど本じゃなきゃダメなの? 本は情報遅くなるよ
83 名前:名前は開発中のものです。 mailto:sage [2020/01/14(火) 21:55:54.96 ID:vQBXke66.net] >>81 なんか君さ、自分自身で「確かめてないし知らないけど」って言いながら「でもそいつの言ってることは間違ってる」って矛盾した発言してるの気付いてる?
84 名前:名前は開発中のものです。 mailto:sage [2020/01/14(火) 21:59:40.00 ID:IMO1kGnb.net] 矛盾はしてないのでは? 自分で調べない、人の言う事は否定、つまり絶対認めない君w
85 名前:名前は開発中のものです。 mailto:sage [2020/01/14(火) 22:40:07.90 ID:vQBXke66.net] 支離滅裂なレスからエスパーしてみると 『Linqのクエリは連結するほどパフォーマンス落ちるから一つに全部書くべきですか?』ってことが知りたいの? だったら処理次第だからベタなループと比べて明確に時間掛かるなら書き方が間違ってると思う 要は関数の細分化でパフォーマンスは落ちるのかと同義だからそれでググれば答えは出て来るよ
86 名前:名前は開発中のものです。 mailto:sage [2020/01/14(火) 23:03:31.16 ID:TgWjNKx2.net] 面接官「見たところMainに全て書かれているようですが何故ですか?」 アホ「は?関数呼び出したらオーバーヘッドで速度落ちんだろボケ」
87 名前:名前は開発中のものです。 [2020/01/14(火) 23:06:26.74 ID:s+JbO9cF.net] >>83 あのなぁ、そいつはそんなコンパイラの最適化の話なんかしてねえよ Aのこと知らなくても別のBの正負が判断できるかは別だよ >>85 さっきから説明してんだろボケ 色々間違った説明をしてる奴が、そこについてツッコミ入れても答えないから間違ってんぞって言ってるだけだよ それとは別にIEnumerable の連鎖をコンパイラの最適化で全部排除するような話があるならそれはぜひ教えてくれって頼むわ
88 名前:名前は開発中のものです。 mailto:sage [2020/01/14(火) 23:14:15 ID:IMO1kGnb.net] 頭髪〜数えたら〜片手でさえ余る〜♪ 抜けた毛、数えたら〜、両手でも足りない〜♪
89 名前:名前は開発中のものです。 mailto:sage [2020/01/14(火) 23:28:54.15 ID:vQBXke66.net] >>87 array.Where(num => ...) こういうLinqに渡すラムダ式が実行毎にインスタンス化される勘違いしてるなら 適切に書いてあればコンパイラが静的参照に置き換えるからパフォーマンスを考える必要はないよ IEnumerableの連鎖とかいうのは>>85 の通り、パフォーマンス落ちるなら書き方が悪い まだ他にも訊きたいことある?
90 名前:名前は開発中のものです。 mailto:sage [2020/01/14(火) 23:45:25.66 ID:TgWjNKx2.net] ツッコミ入れても答えないって、それ呆れられて去ったんだろ ずっと喧嘩腰でぐちぐち言ってるだけだし 車のバッテリー女のコピペ思い出したわ
91 名前:名前は開発中のものです。 mailto:sage [2020/01/14(火) 23:54:43.45 ID:TgWjNKx2.net] 韓国人のケンカには三つの特徴がある ・まず威張った態度で強い言葉や大きな声を出して相手を萎縮させようとする ・二つ目は周囲に訴え味方を増やして有利になろうとする ・三つ目は争点をずらし別の争点を持ち出して挽回しようとする 傍目このまんまなことをしているからまあアレだわな 関わったら負けな人
92 名前:名前は開発中のものです。 [2020/01/15(水) 00:13:42.95 ID:CCdgG/pq.net] >>89 > こういうLinqに渡すラムダ式が実行毎にインスタンス化される勘違いしてるな そういう心配はしていない > パフォーマンス落ちるなら書き方が悪い 具体的には?単に多段すぎる以外に何かあるか?中で不必要に不効率なことしてるのも除き
93 名前:名前は開発中のものです。 [2020/01/15(水) 00:14:16.91 ID:CCdgG/pq.net] >>90 お前みたいな煽るだけのカスが1番いらんわ。死ね
94 名前:名前は開発中のものです。 mailto:sage [2020/01/15(水) 00:36:16.49 ID:Hfyr29Ot.net] >>93 ブーメランで自殺とは潔いな
95 名前:名前は開発中のものです。 mailto:sage [2020/01/15(水) 00:42:29.09 ID:Hfyr29Ot.net] しかしまあLINQ連結したらパフォーマンス劣化するかなんてしQiitaで聞いても総ツッコミ食らうレベルの話でよくこんな粘着出来るもんだ
96 名前:名前は開発中のものです。 [2020/01/15(水) 01:26:12.77 ID:CCdgG/pq.net] >>95 だからお前みたいなロクに読まないで絡んでくる阿呆が湧いてくるから相手にする羽目になってんだろ マジで死ねよクズが
97 名前:名前は開発中のものです。 [2020/01/15(水) 07:32:55.16 ID:Uen6hkVl.net] 相手にしなければいいのに丸
98 名前:名前は開発中のものです。 mailto:sage [2020/01/15(水) 08:13:08.11 ID:RfSstNcC.net] >>63 ありがとう。こういう動くサンプルコードを提示してもらえるのは実にありがたい。 自分はまだ、ゲームパッド向け(※バーチャル含め)のスクリプトしか書いてないけど、 タッチ操作で出来ることの一例を見せてもらえて非常に参考になった。 自分も何とか InputSystem をどうにか工夫して希望の処理を実装しようとしてたけど、 試行錯誤中に別の解決策が見つかってそちらを採用した。 結局、Bダッシュジャンプの実装を "ボタンを離したことを遅延させる" ではなく、"ボタンを離してもしばらく最高速を保つ" ことで実現でした。 問題点の分析の時点で見誤っていたんだ… でも、サンキュー!
99 名前:名前は開発中のものです。 mailto:sage [2020/01/15(水) 08:30:52.78 ID:RfSstNcC.net] 初心者質問スレなのに、初心者に対して自分の知識をひけらかすだけの人もいる。 しかし、親身になって初心者の質問に答えてくれようとする人もいるのは確かだ。 ゴミを排除するのは不可能だが、一方、素晴らしい気づきを与えてくれる人がいるのなら、 多少のゴミは気にしなければいいかな。
100 名前:名前は開発中のものです。 mailto:sage [2020/01/15(水) 09:14:06 ID:LniAutn1.net] 華麗なるスルー一族になりましょう
101 名前:名前は開発中のものです。 [2020/01/15(水) 14:03:59.12 ID:XUqPC4bK.net] 掲示板とunity両方初心者なんですが質問良いですか? 今ブロック崩しを作っているのですが、ブロックを全て破壊した後のクリア画面(scene) を表示する為のプログラミングをどう書けばいいのかわかりません。どなたか教えてくださいませんか? ps.広告エロくないですか?
102 名前:名前は開発中のものです。 mailto:sage [2020/01/15(水) 15:09:15 ID:I4gL1Hl0.net] そんなん公式チュートリアルにある筈やで
103 名前:名前は開発中のものです。 [2020/01/15(水) 15:18:30 ID:XUqPC4bK.net] 公式チュートリアルをどうやって見れば良いか分からないです(;;)
104 名前:名前は開発中のものです。 mailto:sage [2020/01/15(水) 15:45:12 ID:cpUcVrMP.net] すべて破壊した事が判定できてるなら if(clear == true) SceneaManager.LoadScene("シーンの名前"); で良いんじゃないですか? シーン移動しなくてもパネルかイメージを前面に表示しても良いのでは? 自分も初心者なので的外れだったらごめんなさい。
105 名前:名前は開発中のものです。 mailto:sage [2020/01/15(水) 15:52:41 ID:LniAutn1.net] 問題を切り分け。 なにはなくても早く完成させたいなら、一つのシーンで終わるようにする。 シーン遷移を知りたいなら、上で出してもらってる例をとっかかりにググるべし。
106 名前:名前は開発中のものです。 mailto:sage [2020/01/15(水) 15:54:59.21 ID:ur6JW6yw.net] >ps.広告エロくないですか? これって確か自分の閲覧履歴から広告出てるんじゃないかな
107 名前:名前は開発中のものです。 [2020/01/15(水) 15:59:14.78 ID:XUqPC4bK.net] >>104 こんな低レベルの質問に答えて頂きありがとうございます! >>106 知らねぇなぁ
108 名前:名前は開発中のものです。 mailto:sage [2020/01/15(水) 18:17:40.41 ID:W13rfCYM.net] 質問させて下さい。 表示エリア内の3行にDebug.Logの様にどんどんテキストを新しく追加して表示するにはどの様な方法がありますか? 例えば プレイヤーAのこうげき! プレイヤーBのこうげき! プレイヤーCのこうげき! 新しく文字を追加すると上にずれる プレイヤーBのこうげき! プレイヤーCのこうげき! プレイヤーDのこうげき! この時消えた1行目のログは破棄でもスクロールでみれる描画外に消える状態でもとりあえずどっちでもいいです。(両方知れるとありがたいですが) 自分の知識ではテキストオブジェクトを3つ作成して配列に追加、 text[0]= text[1].......というように順番にずらすしか思い浮かびません。 そもそもテキストオブジェクトを3つ並べるという時点でひっかかっています。 テキストオブジェクト1つで3行を指定して〜という事も出来ますよね?きっと・・・。 調べるキーワードだけでも頂ければありがたいです。 自分ではテキストの入力フィールドの話やノベルゲームの会話の様なクリックしたら次のページに・・・といった情報しか見つけられませんでした。 よろしくお願いいたします。
109 名前:名前は開発中のものです。 [2020/01/15(水) 18:50:46.78 ID:Uen6hkVl.net] >>108 3つ並べる時点で引っ掛かるとは? 表示と内部保持は別だから表示する領域は3つ必要だとおもうけど 1つでやるならメッセージに改行入れればいいかな? 現時点でどこまで出来てるのかな?
110 名前:名前は開発中のものです。 mailto:sage [2020/01/15(水) 19:36:28.53 ID:W13rfCYM.net] >>109 3行の事で自分でも何してるかよくわからないほど長い+仕様変更しにくい(例えばログを見れるようにはできない)コードになってしまったのでこういう時の定石やユニティの機能があるかと思い質問しました。 方向性は間違ってないという事ならば同じ処理をforに直したり可読性がアップするようにやってみます! これを書いてる間に配列をリストにしたら過去のログが残るんじゃないか?と思いついたので試してみます!