【ゲームエンジン】Unity初心者質問スレBuild3at GAMEDEV
【ゲームエンジン】Unity初心者質問スレBuild3 - 暇つぶし2ch2:ダーク王鍬大使
20/01/11 15:14:33.35 HCTv2Y3e.net
質問イイでふか?(^^
変数の配列って宣言するときに要素数も決めなきゃいけないのでひょうか?(^^
あとから一つずつ足していくみたいな形に出来ないと困りまんこ(^^

3:ダーク王鍬大使
20/01/11 15:16:42.54 HCTv2Y3e.net
ああ、List使えばいいんでふね…(^^

4:名前は開発中のものです。
20/01/11 15:27:22.16 GoAReVTm.net
>>2
List 楽ですよね
Array なら再定義で
配列 再定義で色々でます

5:名前は開発中のものです。
20/01/11 15:43:20.40 wPvGtAaQ.net
前スレ995で質問した者です
アドバイスを元に、parentをnullにしてみると生成されたプレハブがキャンバス外なのか描写されなくなってしまいました
続いて生成後に新しく作成したキャンバスに親を変更すると実行後1回目だけ左端の意図しない位置にプレハブが生成され、その後通常に動作しました
その後も色々試したのですがまだうまく行きません
あとは
・先に位置を取得して新しいキャンバスにプレハブを生成(これだと頂いたアドバイスを活かせませんが・・・)
・デストロイ前に敵のイメージを透明にする
くらいしか思いつかないです
やりたい事はオブジェクトAの上にオブジェクトBを重ねて表示、Aが消えてもBは消えないという動作です
どうかアドバイスをお願いします

6:名前は開発中のものです。
20/01/11 15:59:21.80 1/8GPuaw.net
>>5
aのワールドポスとってBの生成時にそれをセットすればいいだけじゃ?parentとかやると話ややこしくなる

7:名前は開発中のものです。
20/01/11 16:16:16.56 wPvGtAaQ.net
>>6
レスありがとうございます
一度ポジションを取得する方法も自分なりにやってみたのですが、instantiateで取得したポジションを指定する方法がわかりませんでした、、
その時VisualStudioではvector3をtransformに変換することは出来ませんといったような警告がでてしまったいたと思います
new vector3を手書きで入力する事は出来るのですが、オブジェクトAの位置をposAに代入、それをInstantiateの引数に記述して反映させる方法がわかりません
Instantiate(プレハブ,posA)の様に書く方法はあるのでしょうか?

8:名前は開発中のものです。
20/01/11 16:17:01.56 ftB0znZP.net
>>5
カンバスオブジェにテキストを貼ったプレハブじゃなかったのか。すまん。
そのプレハブにカンバス入れて生成しては?
なら、親外しても良いはず。

9:名前は開発中のものです。
20/01/11 16:19:56.60 joHWbw4j.net
>>5
Destroy前に透明にしておくのがわりと定石っぽいと思う
どうせ破壊時にSEとか演出入れる場合即Destroyはできなくなるし
数が増えてくるとDestroyしてInstantiateしてってやってると思ってるより重くなっちゃうのでしっかりプーリングするのを覚えるといいことづくめよ

10:名前は開発中のものです。
20/01/11 16:27:37.00 wPvGtAaQ.net
>>8
なるほど、キャンバスをMainViewと名付けてその中に全てのオブジェクトを置いていたのでキャンバスごとプレハブにするのは思いつきませんでした、試してみます
ありがとうございます
>>9
たしかに今の動作が実装できたら今度は破壊アニメーションの終了後に~と言うのを調べようと思っていたので透明化が定石なのであれば一石二鳥かもしれませんね
ゲーム作りもプログラミングも初めてなのでプーリングと言うのはなんの事かわかりませんが調べてみます
ありがとうございます

11:名前は開発中のものです。
20/01/11 16:35:55.39 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:名前は開発中のものです。
20/01/11 17:08:22.23 wPvGtAaQ.net
>>11
出来ました!ありがとうございます
この処理でも最初の一回が左端に表示されてしまったのですが、実行を押した瞬間に攻撃していたので処理が間に合わない(バグ?)みたいで、戦闘のスタートとストップボタンをつけて実行後すぐに戦闘開始しない様にしてみたら正常に動作しました
テキストを好きな位置に生成するという単純な事で半日使ってしまいましたが良い勉強になりました、ありがとうございました

13:名前は開発中のものです。
20/01/11 17:10:44.69 GoAReVTm.net
>>10
あぁもし破壊後→破壊アニメ、
その間にダメージが出て文字が大きくなりながら上に上がる
んで終了とかなら、アニメで終了時に関数呼ぶのがいいかと思います

14:名前は開発中のものです。
20/01/11 17:12:42.45 GoAReVTm.net
>>12
プレファブをhide状態で作っておいて、生成してからhide解除するという方法でいけるかもですね

15:名前は開発中のものです。
20/01/12 21:58:52.24 6ETev4FX.net
Lerp() と Slerp() で滑らかにオブジェクトを回転させたいんだけど、FixedUpdate() 内で使ったら、
それらの回転の終了を知るにはどうするんだろう?
FixedUpdate() 内であるタイミングで滑らかに回転してから次の処理を走らせたい。
そもそも 連続するフレーム内での Lerp() と Slerp() の使い方がわからない。
初心者サイト見ても、FixedUpdate() 内で動的に開始と終了ベクトルを指定するサンプルとかがない。
実践的にはどう使うの? それとも UniRXとか使うの?

16:名前は開発中のものです。
20/01/12 22:05:48.90 GUfBc0Nv.net
>>15
【Unity入門】LerpとSlerpの使い方と違い!自在に補間をかけよう
URLリンク(www.sejuku.net)
公式
URLリンク(docs.unity3d.com)
読んだ上での質問なのかな?
あ所でオブジェクト移動にfixed 使うのは何故?

17:名前は開発中のものです。
20/01/12 22:23:31.75 6ETev4FX.net
>>16 さっそくありがとう。
fixed は勘違いで、今処理を書いてるのは Update() だった…
教えてもらったリンクを見たけど、どうやら自分の要件に Lerp() とか Slerp() は適してないかな。
今悩んでた実装は、初代PSのトゥームレイダーみたいにプレイヤーがブロックを押したり、または持ち上げたりするところだけど、
プレイヤーがブロックに対して斜めだと、後々の制御が難しいから、一旦ブロックを押したり、持ち上げたりする正しいポジションに
滑らかに移動・回転させてから、ブロックを押したり、持ち上げたりする動作に移ろうとしてた。
というか、この通り実装すればいいだけか。

18:名前は開発中のものです。
20/01/13 08:38:58.13 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:名前は開発中のものです。
20/01/13 10:48:51.44 Rcgjsxsv.net
>>18
終了条件は何なんだ?
x軸だけまず考えてみよう
何度回転したら止まるのかな?

20:名前は開発中のものです。
20/01/13 11:04:47.55 QiViT9Gr.net
>>19
終了条件は Quaternion Lerp (Quaternion from, Quaternion to, float t);
from が to に達した時が終了条件。
Z軸正・負方向、X軸正・負方向の4方向で頼む。
初心者サイトではたいてい "解説された軸の条件" だけでは動くが、実践ではまるで使えない。
単純な話だよ、"プレイヤーを東西南北の方向に滑らかに正対させる"
そして、正対する動作が完了してから、次の動作を開始させたい。
この処理が聞きたいだけ。

21:名前は開発中のものです。
20/01/13 11:46:21.42 Rcgjsxsv.net
URLリンク(i.gyazo.com)
これ見て理解して
単純にLerpの事理解してないと思うけど、Time.deltaTime という浮動小数点を使っている以上90度にはならない
最後のprint文表示すると分かるけど永遠と89.xxxxxと表示される
インスペクタは省略表示だからそれに惑わされないように
それから同じオブジェクトで複数軸の回転を行うと当然ながら「Quaternion.Euler(0, 90, 0)」では取れないのは分かるよね?

22:名前は開発中のものです。
20/01/13 11:52:55.77 eGNaRuP0.net
Lerpの終了条件って、別にLerpは発動したらずっと動く何かじゃないぞ?
たんに0-1のあいだでfrom,toの間の補完をしてくれるだけだぞ?
お前が次に進めるんだよ!

23:名前は開発中のものです。
20/01/13 11:54:05.76 Rcgjsxsv.net
あ、あとStartに書いたのは
Mathf.Approximately(transform.rotation.eulerAngles.y , 90f) これやりたかったので
一応こちらでも判定は行けると思う

24:名前は開発中のものです。
20/01/13 11:56:44.83 Rcgjsxsv.net
>>22
だからその上にも書いたけど、浮動小数点をステップに浸かってるからずっとToまでやる訳ですよ

25:名前は開発中のものです。
20/01/13 12:15:46.59 QiViT9Gr.net
>>21
素晴らしい! 教えてもらった方法で自分がやりたいことが完全に出来た!
4個処理を書いてたのは、プレイヤーがブロックのどの方向に接触したかで、
処理を分岐させる為で、同時に処理するわけではなかった。申し訳ない。
いや、マジでありがとう。本当に理解している人から教えてもらえて、すごく助かった。

26:名前は開発中のものです。
20/01/13 13:00:01.95 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:名前は開発中のものです。
20/01/13 13:52:22.60 Rcgjsxsv.net
>>26
ターゲットあるならLookat の方が全然いいんだぜ

って、なやり方なんか色々あるのやで
初心者スレなのよここ

28:名前は開発中のものです。
20/01/13 15:25:54.10 6zyx93de.net
(補間を求めているところにLookAt……?)

29:名前は開発中のものです。
20/01/13 16:28:41.18 yBWGUThF.net
まぁ、本人が満足してるからOKだね。

30:名前は開発中のものです。
20/01/13 16:29:23.93 Rcgjsxsv.net
(ターゲットに向ける用途的に)
(って、読めないのかなぁ)

31:名前は開発中のものです。
20/01/13 16:36:47.43 auL79zSW.net
(どう見ても移動と回転の補間としてMoveTowardsまで書いてるのにLookAtって言っちゃう人って…)
って、ごめんマジで教えて
LookAtで座標移動できたっけ?
なんでこの流れでLookAtが出て来るのか分からんぞ

32:名前は開発中のものです。
20/01/13 16:37:27.12 QiViT9Gr.net
そもそもの質問がターゲットを追うじゃなくて、
"プレイヤーを東西南北の方向に滑らかに正対させる"
だよ。
で、>>21 の方法で求める処理が実装出来た、サンキュー!

33:名前は開発中のものです。
20/01/13 17:04:23.60 QiViT9Gr.net
>>26
は質問の意味が理解できなかったんだね。スマンスマン。
"プレイヤーを東西南北の方向に滑らかに正対させる"
なので、Lerp が正解だ、RotateTowards では希望の動作にならない。
しかし皆ありがとう。理解するのにとても助けになった。

34:名前は開発中のものです。
20/01/13 17:31:10.04 6zyx93de.net
(あ、これ一人で質問して一人で回答してる系の痛い奴だ……前も見たことある)

35:名前は開発中のものです。
20/01/13 17:40:43.99 Rcgjsxsv.net
ほんと、答え書けないのにそう言うこと書くとか、何かの病気なんだろうね
可哀想に

36:名前は開発中のものです。
20/01/13 18:11:33.42 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:名前は開発中のものです。
20/01/13 18:42:06.51 QiViT9Gr.net
>>36
ん? それでは動かないぞ。今試した。
>>21 の方法なら動いたけどな、確かに>>21の言う通り浮動小数点を理解出来てないっぽいね。
自分は Unity初心者で、初心者スレで訪ねてるんだから、>>21 のように、
わざわざコードを自分で書いて、動くか試してから教えてくれる人に本当に感謝したい。
まあ、間違って動かないコードもそれなりに参考になるからサンキュー!

38:名前は開発中のものです。
20/01/13 18:50:34.00 Rcgjsxsv.net
ドヤ顔でレスかぁ
前スレからの糖衣構文君思い出したわ

39:名前は開発中のものです。
20/01/13 18:59:30.16 QiViT9Gr.net
まず >>26 で ID:auL79zSW が
"現在位置からターゲットに向ける用途的にはLerpでなくTowards使うんだぜ" と言ってるのが、>>15 からの質問の文脈を無視してるね。
で、>>27 で ID:Rcgjsxsv が
”ターゲットあるならLookat の方が全然いいんだぜ” と言っているのは >>26 でターゲットと出てきたからだ。人の話を聞いてそれに反応してるんだよね。
でも、ドヤ顔して教えてくれて全然かまわないんだ。Unity初心者でも参考になる情報とそうではない情報の区別はつくから。
というか、自分の質問で争いになって申し訳ない気持ちだ。皆さんどうもありがとう。

40:名前は開発中のものです。
20/01/13 19:46:20.54 eGNaRuP0.net
>>38
ああお前勘違いLINQ理解君?

41:名前は開発中のものです。
20/01/13 20:01:23.35 6zyx93de.net
Lerp勘違い理解君か
初心者スレが魔境過ぎて中級者の俺には付いてけない

42:名前は開発中のものです。
20/01/13 20:15:44.52 QiViT9Gr.net
質問スレなんで、質問に対する解決策の提案が出来なければ、誰にも感謝されないよ。
仮に、提案が間違っていても問題ない。一緒に考えてくれることがとてもありがたい。
教えてくれて本当にありがとう。

43:名前は開発中のものです。
20/01/13 21:07:35.13 auL79zSW.net
物知り顔でドヤってる>>21があまりにも愚かだったから突っ込んだだけで感謝とかそういうのは別に求めてない
……というかてめえには一言足りとも語りかけちゃいないのになんでお前がいちいち答えるんだよ、構ってちゃんかよ

44:名前は開発中のものです。
20/01/13 21:09:46.43 Rcgjsxsv.net
>>41
自称中級者なのになんで初心者スレきたの?
寂しいの?
書かないと死ぬ病気なの?
構ってほしいのかな?

なら雑談スレいけやぼけ

45:名前は開発中のものです。
20/01/13 21:11:21.23 Rcgjsxsv.net
>>43
だから糖衣構文君は雑談スレで勘違いして暴れていいよ
ほんと動かないコード書いて恥ずかしくないのかね

46:名前は開発中のものです。
20/01/13 21:32:16.53 QiViT9Gr.net
質問いいかな?
マリオ64+初代トゥームレイダーみたいな3Dアクション作ってるんだけど、
スマホ画面のバーチャルボタンでの二つボタン同時押しがきつい。
例えば、Bダッシュジャンプ(※B押しながらAでジャンプ)とかが出来ない。
そこで物理コントローラでの操作はそのままで、例えばスマホ画面の
バーチャルコントローラだけ、Bボタンを "離す入力" を遅延させることは出来ないかな?
例えばスマホではBボタンを離しても、0.5秒は押したままで判定されて、その隙にAボタンを押すみたいな。
スクリプト内では以下でコントローラの入力を取ってる。
UnityEngine.InputSystem.Controls.ButtonControl
自分が思いつくのは拡張メソッドとか?
スマホ判定したら、特定のボタンの wasReleasedThisFrame が来たら、何とかして遅延実行させるとか?

47:名前は開発中のものです。
20/01/13 21:46:07.74 Rcgjsxsv.net
>>46
さーせん自分インプットシステムようわからんので
ここは自称中級者君と糖衣構文君が動くコード書いて説明してれることを祈る

48:名前は開発中のものです。
20/01/13 22:06:33.65 QiViT9Gr.net
>>47
いえいえ、いつもありがとう。
スクリプトでは例えば以下のように書いてるけど(※例えばYボタン)
if (yButton.wasReleasedThisFrame) {
// 処理
}
物理コントローラー接続時とスクリプトを変えたくないとしたら、
yButton.wasReleasedThisFrame の前に処理をインターセプト出来て、
本来の wasReleasedThisFrame が来たら 10フレ遅らせて wasReleasedThisFrame を発火させるとか。
なら、UnityEngine.InputSystem.Controls.ButtonControl を継承した自作クラスを作るとか?
そんな入力イベントをバッファ出来る自作ボタンコントロールクラスとか出来るのかな?

49:名前は開発中のものです。
20/01/13 22:39:53.81 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:名前は開発中のものです。
20/01/13 22:40:12.07 yBWGUThF.net
そんな処理より、操作変えた方がいいよ。
ボタン二つを管理するのかな?と思ったけどそうじゃなくて遅延させるのはちょっと…
どうしてもやりたいなら、タッチマネージャーを頭から作るのが必要かと。

51:名前は開発中のものです。
20/01/13 22:42:52.88 6zyx93de.net
ここまでの内容をまとめると
怒涛の連レスするID:RcgjsxsvはID:QiViT9Grと同一人物で
前スレで何か悔しいことがあってたまらないから自分で質問して自分で解答して
感謝されてる素晴らしい僕を見せつけたいとそんな感じか
どれだけ承認欲求拗らせるとこうなるんだろう

52:名前は開発中のものです。
20/01/13 23:13:16.61 QiViT9Gr.net
>>50
アドバイスありがとう。
タッチマネージャーを自作が良さげでいいのかな。
うーん、もともと ”このゲームは必ず物理コントローラを接続して下さいキリッ!” っていこうとしてたけど、
流石にそんな物理コントローラ用意するコアな人達は1%もいないと思い、スマホ画面上にボタン表示して自分で
動作テストしたけど、当然とても操作が難しかった。
でも、自分的にはスマホ的なタッチ操作はまだ考えてなくて、あくまでスーパーファミコン的な操作でやりたいと思ってる。
で、ボタンを離す動作の遅延処理を思いついたという流れ。
上に書いたように拡張メソッド自体は動くので、何とかバッファ処理出来ないかなと…
スマホ画面でBダッシュジャンプを実装したいなあ…

53:名前は開発中のものです。
20/01/13 23:43:09.48 yBWGUThF.net
指がaボタンの位置にきたらジャンプでいいのでは?
①b押しっぱなしからスライドa領域
②a領域タッチ

54:名前は開発中のものです。
20/01/13 23:54:48.93 wx103lZP.net
>>52
実装はとてつもなく簡単だがお前には絶対に理解出来ないから諦めろ
生成したInputActionに登録するコールバックでフラグ立ててコンテキスト見ながらUpdate内でポーリングとか言われても分かんないだろ?
これが超基本的なInputSystemの使い方なのに生の値取って処理しようとしてるレガシーなお前にはまず不可能なんだよ

55:名前は開発中のものです。
20/01/14 00:08:41.92 TgWjNKx2.net
入力バッファの為のInputSystemでバッファ取る為にサブクラス作るって最高に馬鹿げてるけど、Upフラグキャプチャして0.5秒後に消すだけのことが自分で分からないならぶっちゃけ何言っても伝わらないと思う
IQは20違うと話が通じないって言われてるんだよのび太君

56:名前は開発中のものです。
20/01/14 01:54:57.74 s+JbO9cF.net
>>45
いいからお前はSelectMany挟んだ時の動作イメージ書けよ。逃げてんじゃねーぞ

57:名前は開発中のものです。
20/01/14 07:50:43.51 Sje8YI9U.net
>>53
なるほど、でも "ボタン" で実装するのが要件なんだ。
>>54, 55
とりあえず、ありがとう。調べてみるわ。

58:名前は開発中のものです。
20/01/14 07:58:18.64 d/PuqDsL.net
>>56
(自分が先に書いて見せればそれで論破が成立するのにそれをしない……つまりはあれか、自身の知らない答えを煽って引き出そうとする伝統のあれか……)

59:名前は開発中のものです。
20/01/14 10:53:05.74 s+JbO9cF.net
>>58
こっちはIEnumが連続するって話で終わってんだが
LINQ勘違い君はWhere限定の最適化方法や関係ないLINQ使用箇所のIL上げてほらループネストしてないだろドヤっ!とかWhereは要素そのもの返すだとか
間違いや勘違いだらけのこと並べ立てて俺はLINQよく知ってるって勘違いしまくってるんだけどよくアレで他からツッコミ入らないのか不思議でならないんだが

60:名前は開発中のものです。
20/01/14 11:03:25.28 Sje8YI9U.net
Bダッシュジャンプの挙動は UniRX の Observable で実装出来た。
InputSystem.Controls.ButtonControl や、InputSystem.OnScreen.OnScreenButton 辺りで
色と試したけど、スクリプトの中でボタンを押したことにしても、希望の動作にならかかったので、
UniRX で、ダッシュボダンを離しても nフレ後までは最高速ジャンプ出来るように実装した。
あとアドバイスの内容で、ああこの人は "物理ゲームパッド用のゲーム" を開発したことない人だなと分かるようになった。
UnityEngine.InputSystem.Gamepad とかのことね。
でも出来たんでサンキュー!

61:名前は開発中のものです。
20/01/14 11:42:59.26 Sje8YI9U.net
というか、Unity初心者の自分が言うのもなんだが UniRx 便利だわ。
実務の C#案件では LINQ は自然につかうが、Rx まではあんま必要なかった。
まあ、Unity でも LINQ で処理する必要性があったら使おうと思うけどね。
それとも、Unity では UniRx はOKで、LINQ はダメなの? どして?

62:名前は開発中のものです。
20/01/14 12:56:12.43 GDy6IxVO.net
>>59がLINQに詳しいみたいだから聞いてみたらどうだろう
IEnumとか想像上のIF?持ち出してるあたりあんまり分かってないみたいだけど

63:名前は開発中のものです。
20/01/14 13:02:53.66 FSjVa/a9.net
>>60 おはようございます出来たそうでよかったです、もう必要ないかもしれないけど
ちょっと自分も>>46の要件をやってみました頭の体操になりましたので参考までに
よければ、こんな画面でuiのbuttonコンポーネントに画像付けてみまして
URLリンク(i.gyazo.com)
Aボタンの遅延を実装してみました
URLリンク(i.gyazo.com)
プログラムではボタンを離してから2秒後まで押下中と判断しています
単純に押下の判定を2つ、ボタン押しているか?フラグが立っているかです
で離した後Invokeでフラグを解除しています
RaycastAllとか勉強になりましたよ

64:名前は開発中のものです。
20/01/14 13:04:43.50 A84mTdZ6.net
>>62
めんどくさいから省略してるぐらいわかんだろほんとアホなの?

65:名前は開発中のものです。
20/01/14 13:04:50.47 d/PuqDsL.net
>>59
ふーん
で、ソースは?
まさか脳内ソースとか言わないよな

66:名前は開発中のものです。
20/01/14 13:08:41.41 GDy6IxVO.net
>>64
IEnumeratorとIEnumerableのどっちのつもり?

67:名前は開発中のものです。
20/01/14 13:38:07.43 FSjVa/a9.net
雑談スレでゆっくり心行くまでやってけれ

68:名前は開発中のものです。
20/01/14 13:49:13.98 A84mTdZ6.net
>>65
.NETのソース見ろよボケ
>>66
流石に端折りすぎだったなすまそ。bleの方

69:名前は開発中のものです。
20/01/14 14:03:25.38 d/PuqDsL.net
うーん、ここまでソース無し
やっぱり>>58で言ったように煽って解答訊き出したい教えて君か

70:名前は開発中のものです。
20/01/14 14:13:57.18 d/PuqDsL.net
>>68「.NETのソース見ろよボケ(わかんないからソース探してわかりやすくぼくに教えて!)」
確かゆとり世代が使ってた手口だっけ
おっさんこんな昼間っから何してるん?

71:名前は開発中のものです。
20/01/14 14:16:56.94 A84mTdZ6.net
ソースも何もLINQ、IEnumerable数珠つなぎなんでパフォーマンスの劣化多少あるかもね?って話でforeachの展開一つだけだからいくら繋げても劣化ねーよとか言い出したアホが出してくるもの全部的はずれだったりWhere特化の最適化の話だったり、
間違えてるよ?って諭しても俺は間違ってない(具体的な反論なし)って言い張るだけ。別にもう聞きたいことないからまあどうでもいいよ。つか勘違いLINQ君の言ってること鵜呑みにしてるんだったらお前やべえぞ?
URLリンク(docs.microsoft.com)
URLリンク(docs.microsoft.com)

72:名前は開発中のものです。
20/01/14 14:17:47.26 A84mTdZ6.net
>>70
もう聞きたい事なんかねーよwアホか

73:名前は開発中のものです。
20/01/14 14:21:57.86 d/PuqDsL.net
>>71-72
お、自己解決したの?
良かったじゃん
これも全部俺が発破掛けてやったおかげだな

74:名前は開発中のものです。
20/01/14 14:51:50.74 GDy6IxVO.net
>>71
つまるところforeachは遅くてGCゴミが発生するからforを使おうっていうのと同種のことを言いたいの?

75:名前は開発中のものです。
20/01/14 15:28:52.59 A84mTdZ6.net
>>74
いや元々は誰かがLINQ、Unityでは今でも使わん方がいいんだっけ?とか言ってきたのでIEnumerableの数珠つなぎになるから多少なりパフォーマンス劣化はあるのかもね?って話したらforeachの展開はひとつだから劣化なんかねーよとか言い出してきたのが最初。
自分的にはIEnumerableの連鎖がパフォーマンス劣化に関係するのかは確かめてないしで知らんけど、とりあえずそいつが言ってるforeachはひとつだから劣化はありえないとか言ってるのがいや色々間違ってるだろって言いたいだけだよ

76:名前は開発中のものです。
20/01/14 15:49:25.00 GDy6IxVO.net
なんだ、コンパイラのことも分かってない初心者か

77:名前は開発中のものです。
20/01/14 16:43:42.20 1kzoRmok.net
コンパイラーV!

78:名前は開発中のものです。
20/01/14 18:05:03.70 FSjVa/a9.net
ほらあふぉばかりだろだから次スレ要らなかったんだよ

79:名前は開発中のものです。
20/01/14 19:07:42.80 ZrDQOmlZ.net
unity 2019.2のプロジェクトにUnity Recorderのアセットインストールしたらプロジェクトが破損した
バックアップ取ってたから良かったけど
こういう事あるんだな…
あとで2019からUnity Recorderはpackagemanegerでインストールするんだと知った

80:名前は開発中のものです。
20/01/14 19:40:09.55 /EhPGLH9.net
カードゲームをUnityで作りたいのですが、
カードゲームの作り方の実例が乗っている本ってありませんでしょうか?

81:名前は開発中のものです。
20/01/14 19:59:09.56 A84mTdZ6.net
>>76
コンパイラーでそんなLINQ最適化されるならそれは是非教えて欲しいところだわ

82:名前は開発中のものです。
20/01/14 21:30:54.82 FSjVa/a9.net
>>79
で、どんな質問なの?
>>80
unity カードゲームで検索するといっぱいでてくるけど本じゃなきゃダメなの?
本は情報遅くなるよ

83:名前は開発中のものです。
20/01/14 21:55:54.96 vQBXke66.net
>>81
なんか君さ、自分自身で「確かめてないし知らないけど」って言いながら「でもそいつの言ってることは間違ってる」って矛盾した発言してるの気付いてる?

84:名前は開発中のものです。
20/01/14 21:59:40.00 IMO1kGnb.net
矛盾はしてないのでは?
自分で調べない、人の言う事は否定、つまり絶対認めない君w

85:名前は開発中のものです。
20/01/14 22:40:07.90 vQBXke66.net
支離滅裂なレスからエスパーしてみると
『Linqのクエリは連結するほどパフォーマンス落ちるから一つに全部書くべきですか?』ってことが知りたいの?
だったら処理次第だからベタなループと比べて明確に時間掛かるなら書き方が間違ってると思う
要は関数の細分化でパフォーマンスは落ちるのかと同義だからそれでググれば答えは出て来るよ

86:名前は開発中のものです。
20/01/14 23:03:31.16 TgWjNKx2.net
面接官「見たところMainに全て書かれているようですが何故ですか?」
アホ「は?関数呼び出したらオーバーヘッドで速度落ちんだろボケ」

87:名前は開発中のものです。
20/01/14 23:06:26.74 s+JbO9cF.net
>>83
あのなぁ、そいつはそんなコンパイラの最適化の話なんかしてねえよ
Aのこと知らなくても別のBの正負が判断できるかは別だよ
>>85
さっきから説明してんだろボケ
色々間違った説明をしてる奴が、そこについてツッコミ入れても答えないから間違ってんぞって言ってるだけだよ
それとは別にIEnumerable の連鎖をコンパイラの最適化で全部排除するような話があるならそれはぜひ教えてくれって頼むわ

88:名前は開発中のものです。
20/01/14 23:14:15 IMO1kGnb.net
頭髪~数えたら~片手でさえ余る~♪
抜けた毛、数えたら~、両手でも足りない~♪

89:名前は開発中のものです。
20/01/14 23:28:54.15 vQBXke66.net
>>87
array.Where(num => ...)
こういうLinqに渡すラムダ式が実行毎にインスタンス化される勘違いしてるなら
適切に書いてあればコンパイラが静的参照に置き換えるからパフォーマンスを考える必要はないよ
IEnumerableの連鎖とかいうのは>>85の通り、パフォーマンス落ちるなら書き方が悪い
まだ他にも訊きたいことある?

90:名前は開発中のものです。
20/01/14 23:45:25.66 TgWjNKx2.net
ツッコミ入れても答えないって、それ呆れられて去ったんだろ
ずっと喧嘩腰でぐちぐち言ってるだけだし
車のバッテリー女のコピペ思い出したわ

91:名前は開発中のものです。
20/01/14 23:54:43.45 TgWjNKx2.net
韓国人のケンカには三つの特徴がある
・まず威張った態度で強い言葉や大きな声を出して相手を萎縮させようとする
・二つ目は周囲に訴え味方を増やして有利になろうとする
・三つ目は争点をずらし別の争点を持ち出して挽回しようとする
傍目このまんまなことをしているからまあアレだわな
関わったら負けな人

92:名前は開発中のものです。
20/01/15 00:13:42.95 CCdgG/pq.net
>>89
> こういうLinqに渡すラムダ式が実行毎にインスタンス化される勘違いしてるな
そういう心配はしていない
> パフォーマンス落ちるなら書き方が悪い
具体的には?単に多段すぎる以外に何かあるか?中で不必要に不効率なことしてるのも除き

93:名前は開発中のものです。
20/01/15 00:14:16.91 CCdgG/pq.net
>>90
お前みたいな煽るだけのカスが1番いらんわ。死ね

94:名前は開発中のものです。
20/01/15 00:36:16.49 Hfyr29Ot.net
>>93
ブーメランで自殺とは潔いな

95:名前は開発中のものです。
20/01/15 00:42:29.09 Hfyr29Ot.net
しかしまあLINQ連結したらパフォーマンス劣化するかなんてしQiitaで聞いても総ツッコミ食らうレベルの話でよくこんな粘着出来るもんだ

96:名前は開発中のものです。
20/01/15 01:26:12.77 CCdgG/pq.net
>>95
だからお前みたいなロクに読まないで絡んでくる阿呆が湧いてくるから相手にする羽目になってんだろ
マジで死ねよクズが

97:名前は開発中のものです。
20/01/15 07:32:55.16 Uen6hkVl.net
相手にしなければいいのに丸

98:名前は開発中のものです。
20/01/15 08:13:08.11 RfSstNcC.net
>>63
ありがとう。こういう動くサンプルコードを提示してもらえるのは実にありがたい。
自分はまだ、ゲームパッド向け(※バーチャル含め)のスクリプトしか書いてないけど、
タッチ操作で出来ることの一例を見せてもらえて非常に参考になった。
自分も何とか InputSystem をどうにか工夫して希望の処理を実装しようとしてたけど、
試行錯誤中に別の解決策が見つかってそちらを採用した。
結局、Bダッシュジャンプの実装を "ボタンを離したことを遅延させる" ではなく、"ボタンを離してもしばらく最高速を保つ" ことで実現でした。
問題点の分析の時点で見誤っていたんだ…
でも、サンキュー!

99:名前は開発中のものです。
20/01/15 08:30:52.78 RfSstNcC.net
初心者質問スレなのに、初心者に対して自分の知識をひけらかすだけの人もいる。
しかし、親身になって初心者の質問に答えてくれようとする人もいるのは確かだ。
ゴミを排除するのは不可能だが、一方、素晴らしい気づきを与えてくれる人がいるのなら、
多少のゴミは気にしなければいいかな。

100:名前は開発中のものです。
20/01/15 09:14:06 LniAutn1.net
華麗なるスルー一族になりましょう

101:名前は開発中のものです。
20/01/15 14:03:59.12 XUqPC4bK.net
掲示板とunity両方初心者なんですが質問良いですか?
今ブロック崩しを作っているのですが、ブロックを全て破壊した後のクリア画面(scene)
を表示する為のプログラミングをどう書けばいいのかわかりません。どなたか教えてくださいませんか?
ps.広告エロくないですか?

102:名前は開発中のものです。
20/01/15 15:09:15 I4gL1Hl0.net
そんなん公式チュートリアルにある筈やで

103:名前は開発中のものです。
20/01/15 15:18:30 XUqPC4bK.net
公式チュートリアルをどうやって見れば良いか分からないです(;;)

104:名前は開発中のものです。
20/01/15 15:45:12 cpUcVrMP.net
すべて破壊した事が判定できてるなら
if(clear == true)
SceneaManager.LoadScene("シーンの名前");
で良いんじゃないですか?

シーン移動しなくてもパネルかイメージを前面に表示しても良いのでは?

自分も初心者なので的外れだったらごめんなさい。

105:名前は開発中のものです。
20/01/15 15:52:41 LniAutn1.net
問題を切り分け。
なにはなくても早く完成させたいなら、一つのシーンで終わるようにする。
シーン遷移を知りたいなら、上で出してもらってる例をとっかかりにググるべし。

106:名前は開発中のものです。
20/01/15 15:54:59.21 ur6JW6yw.net
>ps.広告エロくないですか?
これって確か自分の閲覧履歴から広告出てるんじゃないかな

107:名前は開発中のものです。
20/01/15 15:59:14.78 XUqPC4bK.net
>>104
こんな低レベルの質問に答えて頂きありがとうございます!
>>106
知らねぇなぁ

108:名前は開発中のものです。
20/01/15 18:17:40.41 W13rfCYM.net
質問させて下さい。
表示エリア内の3行にDebug.Logの様にどんどんテキストを新しく追加して表示するにはどの様な方法がありますか?
例えば
プレイヤーAのこうげき!
プレイヤーBのこうげき!
プレイヤーCのこうげき!
新しく文字を追加すると上にずれる
プレイヤーBのこうげき!
プレイヤーCのこうげき!
プレイヤーDのこうげき!
この時消えた1行目のログは破棄でもスクロールでみれる描画外に消える状態でもとりあえずどっちでもいいです。(両方知れるとありがたいですが)
自分の知識ではテキストオブジェクトを3つ作成して配列に追加、
text[0]= text[1].......というように順番にずらすしか思い浮かびません。
そもそもテキストオブジェクトを3つ並べるという時点でひっかかっています。
テキストオブジェクト1つで3行を指定して~という事も出来ますよね?きっと・・・。
調べるキーワードだけでも頂ければありがたいです。
自分ではテキストの入力フィールドの話やノベルゲームの会話の様なクリックしたら次のページに・・・といった情報しか見つけられませんでした。
よろしくお願いいたします。

109:名前は開発中のものです。
20/01/15 18:50:46.78 Uen6hkVl.net
>>108
3つ並べる時点で引っ掛かるとは?
表示と内部保持は別だから表示する領域は3つ必要だとおもうけど
1つでやるならメッセージに改行入れればいいかな?
現時点でどこまで出来てるのかな?

110:名前は開発中のものです。
20/01/15 19:36:28.53 W13rfCYM.net
>>109
3行の事で自分でも何してるかよくわからないほど長い+仕様変更しにくい(例えばログを見れるようにはできない)コードになってしまったのでこういう時の定石やユニティの機能があるかと思い質問しました。
方向性は間違ってないという事ならば同じ処理をforに直したり可読性がアップするようにやってみます!
これを書いてる間に配列をリストにしたら過去のログが残るんじゃないか?と思いついたので試してみます!

111:名前は開発中のものです。
20/01/15 20:59:10 Uen6hkVl.net
>>110
一応簡単なサンプル
URLリンク(i.gyazo.com)
わかるかな、ボタン押すとテキストに時間を表示するんだけど
(Time.timeなので何時何分じゃない)
スクリプトを空のGameObjectに付けて、ボタンのOnClickを割り付ければ動きます

112:名前は開発中のものです。
20/01/16 05:40:01.72 7tyD46Nv.net
公式チュートリアルを見ろと言っても最新版対応してないし公式からリンク貼られてないしな

113:名前は開発中のものです。
20/01/16 09:57:14.19 BjOYmzpz.net
ゾンバニのコースはやったけどチュートはろくに見てないな

114:名前は開発中のものです。
20/01/16 11:04:23 ROtYDo05.net
>>110
最初はみんな試行錯誤して長いコードを短くしていくんだよ

次のチュートリアル、Boltのなんだけど
URLリンク(doc.photonengine.com)

ここのOnGUI部分がログ表示しているから参考にでもなれば

115:名前は開発中のものです。
20/01/16 13:26:46 KnIqTgOi.net
アプリ作って公開したけどインストール数0で萎えた

116:名前は開発中のものです。
20/01/16 14:20:57.99 4CEOlc+6.net
ビビッドアーミーくらい広告うつんだよお

117:名前は開発中のものです。
20/01/16 15:12:44 6AR8nXfd.net
>>108
ざっとこんなんで動かん?

// 1行ごとに格納
List<string> str = new List<string>();
/* 分割して代入するところは省略 */
// 表示するテキストを用意
for(int i = 0; i < (str.Count - 3); i++;)
{
var dispString =
str[i+0] + "\n" +
str[i+1] + "\n" +
str[i+2];
(表示するTMP).text=dispString;
// 入力待ち受け
while(true)
{
if(Input.GetAnyKeyDown){break;}
yield return null;
}
}

118:名前は開発中のものです。
20/01/16 15:50:32 KnIqTgOi.net
>>116
絶対赤字だよお

119:名前は開発中のものです。
20/01/16 16:40:41.74 JHlZDhFA.net
>>117
それ試したのかな?
メッセージ3つ以上になったときダメな感じするけど

120:名前は開発中のものです。
20/01/16 16:43:41.04 JHlZDhFA.net
と言うかそもそもメッセージ1つだとfor 文回らんのじゃないか?
そちらの環境だと動くの?

121:名前は開発中のものです。
20/01/16 19:25:05.99 IlvXKjzu.net
a = 120640 / 23270
が何回やっても5になるのですが理由わかる方いらっしゃいますか?
5.184....になるはずなのですが。
aはint float doubleに変えて試しました。

122:名前は開発中のものです。
20/01/16 20:27:07 IlvXKjzu.net
(double)を数字の前に付ける事により解決しました、すみません。

123:名前は開発中のものです。
20/01/16 20:32:59.73 ROtYDo05.net
>>121
URLリンク(i.gyazo.com)

124:名前は開発中のものです。
20/01/16 20:38:02.01 0GLcsHOa.net
>>121
aがなんの型になってるとか確認する癖つけた方がいいぞ
float aとかにしてたらどのみち同じようになんで?ってなってそうだけど

125:名前は開発中のものです。
20/01/16 20:49:07.04 JHlZDhFA.net
>>124
aもそうだけど数字をどう扱うか
10はint だが
10fはfloat
int 同士の計算は当然int になる

126:名前は開発中のものです。
20/01/16 21:20:23 IlvXKjzu.net
URLリンク(blog.jnito.com)

ここを見て解決した気になってましたが、float型やdouble型にint同士の計算を入れているからダメだったんですね。

計算した結果が少数ならfloatかdoubleにいれれば良いと思っていました。

勉強になりました、ありがとうございます。

127:名前は開発中のものです。
20/01/16 21:21:35 71qtQAGF.net
>>125
なるほど。
普通は上記使い方しないからなかなか分からんかったw

128:名前は開発中のものです。
20/01/16 22:22:42.98 3nBiw/QG.net
まだunityを触っていないまま質問です
32×32サイズでクォータービューの2Dドット絵のマップチップをAsepritで作っているのですが
チップ同士を隣接させたところ、隙間ができてしまい、グリッドがずれてることに気付きました
例ですが、このグリッドベースでオブジェクトを打てば隙間も無くピッタリなのですが
URLリンク(i.imgur.com)
自分が打っていたグリッドベースを数えたらこのような隙間が空いていました
URLリンク(i.imgur.com)
32×32の場合、必ず前途したベースでないとだめなのでしょうか?
unity側でグリッドの補正等出来ますか?

129:名前は開発中のものです。
20/01/17 00:07:10.08 DQl2Cdvo.net
>>127
C#に限らず、大体どの言語もそんなだから覚えておくと吉

130:名前は開発中のものです。
20/01/17 00:19:36.74 y9XjThLN.net
>>129
うん、ありがとう。

131:名前は開発中のものです。
20/01/17 07:49:58.48 YRNiJPaW.net
>>128
どんなサイズでもきっちり隙間無く書かないと並べたときに綺麗に並ばない
もし、隙間あけるなら必ず同じように空けないとダメ
一応unity 側で調整出来るけどきっちり作るのがベター

132:名前は開発中のものです。
20/01/17 08:16:58.28 Y0yz8WGH.net
>>131
ありがとうございます打ち直します

133:名前は開発中のものです。
20/01/17 09:26:42 5AmoHC5L.net
>>125
だからfloat a=9/8とか書いてあれfloatなのに少数どこ言っちゃったのってならないようになるって話なんだが

134:名前は開発中のものです。
20/01/17 09:28:18 5AmoHC5L.net
なるって話 じゃねぇ、なって話 だ
逝ってくる

135:名前は開発中のものです。
20/01/17 09:53:56 YRNiJPaW.net
>>133
言語仕様だから突き詰めたいならプログラムスレでどうぞ

136:名前は開発中のものです。
20/01/17 11:20:10 5AmoHC5L.net
>>135
ん?俺なんか間違ったこと言ってるか?
そういう風に書くとint計算で端折られたのなんで?ってならないようにしときって言ってんだけど。
煽る前に読めよスカタン

137:名前は開発中のものです。
20/01/17 11:35:00.16 7o/zONHK.net
日本語、難しいアルね

138:名前は開発中のものです。
20/01/17 12:46:45 iePOXEZj.net
>>136
float a = 9 / 8;

これだとfloat型の1がaに入るわけだが型チェックとか何が言いたいんだお前

139:名前は開発中のものです。
20/01/17 13:17:59 A1JDxx3q.net
ケンカはやめて
争わないで

140:名前は開発中のものです。
20/01/17 13:49:21 7o/zONHK.net
たぶん、なっ。と、なるな。の受け取りでズレてる。
同じこと言ってる。その気はないと思うけど、マウントの取り合いみたいにこじれてる

141:名前は開発中のものです。
20/01/17 13:55:10 dXLmY07g.net
むきー!9/8はint型でしょ!
if((9/8) is int)で判定しろ!

ってことじゃねつまり?

142:名前は開発中のものです。
20/01/17 13:57:54 7o/zONHK.net
いえ、言ってないと思いますw

今ノダメ観てるから、ノダメの映像が浮かびました。ムキーッで。

143:名前は開発中のものです。
20/01/17 14:01:37 YRNiJPaW.net
>>142
id スゲーな

144:名前は開発中のものです。
20/01/17 15:26:21.56 vgfUBkK+.net
>>138
文盲乙

145:名前は開発中のものです。
20/01/17 16:41:22.53 7o/zONHK.net
>>143
私のレス、読みましたね。購読料集金に来ましたw

146:名前は開発中のものです。
20/01/18 10:01:35.73 X4kcE6Zm.net
>>115
Twitterでプレイ動画とURL貼ってPRしろ
アプリ出すだけでDLされるなんて甘い考えは捨てろ
開発関連のイベントで会った人全員にDL用QRコードの入った名刺を渡せ

147:名前は開発中のものです。
20/01/18 10:45:09.64 MDBAXKOZ.net
しろ、捨てろ、わたせ
何んで、おこってんの?
カルシウム足りないの?寝不足なの?

148:名前は開発中のものです。
20/01/18 20:07:26.70 xPWOBapd.net
3Dアクションゲームを作ってて、いよいよ敵の行動ロジック(いわゆる敵AI)を書き始めたけど、
何か基本的なセオリーってあるの?
とりあえず、以下のように考えてる。
1:プレイヤー索敵(ランダム範囲パトロール)
2:プレイヤー発見・追跡
3:プレイヤー捕捉・攻撃
現在、2 と 3 の基本的な処理は出来た。

149:名前は開発中のものです。
20/01/18 22:16:28.58 gu+t92SX.net
あせっとをかうのがセオリー

150:名前は開発中のものです。
20/01/18 22:36:12.99 sRYPYeXb.net
>>148
君のゲームの仕様わからんからなんともw
まぁ、そんなところでいいんじゃないかな。
あとはそれをもとに、こんな動きしてしまうけどこういう動きにしたいどうすれば?と聞けば良いかと。

151:名前は開発中のものです。
20/01/18 23:47:19.34 X4kcE6Zm.net
>>148
それはAIではない

152:名前は開発中のものです。
20/01/19 00:06:48.70 310P+bV6.net
んじゃAIの定義を是非

153:名前は開発中のものです。
20/01/19 01:05:02.78 EOHxfdla.net
>>150
ありがとう、[索敵]⇔[追跡]⇔[攻撃] の超基本が実装出来た。
"無" から作成したおバカな敵AIだけど、フィールドで彼が徘徊している姿を見て、
とてもゲームらしくなった気がした。
また、索敵判定にスフィアコライダーをトリガーで使ってるけど、円じゃなくて扇形で判定出来れば、
後ろから敵に気づかれずに近づくとか出来るけど、複雑じゃなく簡単な扇形判定方法はないんだろうか?
あと UniRx が有能過ぎた、もうこれなしで作れる気がしない。

154:名前は開発中のものです。
20/01/19 02:32:04.52 TBz8d+il.net
>>153
メッシュコライダに扇型を入れる

155:名前は開発中のものです。
20/01/19 05:57:07 sNg7suvy.net
タイルパレットを使って、ステージを作ってる時のScene画面なんですが
この右下の窓が邪魔なんです。これを消すなり動かすことは出来ないのでしょうか?
ただでさえ小さなScene画面なのにこれが心底邪魔でイライラします、、、
URLリンク(download1.getuploader.com)

156:名前は開発中のものです。
20/01/19 07:36:19.91 VcE2c620.net
まずscene画面を大きくすればいいんじゃないか

157:名前は開発中のものです。
20/01/19 09:47:15.38 pFV/J70z.net
>>153
扇形はスフィアなりサークルコライダーの中に入ったら、自分と敵の角度を出して判定すればいいんじゃない?

158:名前は開発中のものです。
20/01/19 11:41:02.55 EOHxfdla.net
>>154
メタセコで扇型のメッシュ作ってメッシュコライダーに設定したら、
やりたかったことが、いとも簡単に実現出来た!
ありがとう、最良の解決案だった。
>>157
んー 二つのベクトルの角度の計算とかちょっと直ぐには思いつけなかった。
でもサンキュー

159:名前は開発中のものです。
20/01/19 19:47:41.79 EOHxfdla.net
敵AIの実装はひとまず出来て納得した。
次は爆弾の処理を作ろうと思う。
メタセコで爆弾の3Dモデル作ってプレハブ化したところ。
プレイヤーが爆弾を持って運んで、置いたら(投げたら?)爆発する感じかな。
そして、爆弾を爆破させたら破片を飛ばして、その破片が当たったオブジェクトが
破壊される感じ。
でも、文章で書く処理の想定と、実際のコーデイングに "差" があるとなかなか難しいよね。
爆弾の破片は ”破片用” のプレハブを作成して多数クローン?してリジッドボデイを飛ばそうと思うけど、
そんな感じの処理でいいのかな?

160:名前は開発中のものです。
20/01/19 20:29:29.66 TBz8d+il.net
それは流石に色々できるから正解は無い。
それでどうぞ。

161:名前は開発中のものです。
20/01/19 20:46:35.85 5MKiJb2W.net
>>159
そう言うのに手裏剣使うのもアリ?

162:名前は開発中のものです。
20/01/19 21:15:28.29 EOHxfdla.net
>>160
サンキュー、絶賛実装中。
>>161
手裏剣ってなんだ? と思ったらパーティクルシステムのことなのね。
今回はパーティクルは使わないつもり、ってか使ったことない。
爆弾がn秒後に爆発して破片オブジェクトを飛ばすとこまで出来た。
プレイヤーが持ったまま爆発したら、キャラの IK がそのままになるので、
爆弾側からの強制パージが必要だった。

163:155
20/01/19 21:29:25.22 sNg7suvy.net
え、まさかレスがもらえないとは思えませんでした。
消す方法は無いってことでいいですか?

164:名前は開発中のものです。
20/01/19 23:06:24.48 7w1DRTId.net
無いんじゃね
まぁアセットだからソースいじればできっかもだけど

165:155
20/01/19 23:16:04.05 sNg7suvy.net
そうですか、自分はノートパソコンでやってるんで
scene画面を大きくするという解決方法じゃラチがあかんのです。
うーん、残念です。
皆さんありがとうございました。

166:名前は開発中のものです。
20/01/20 04:40:22.99 KMQ3boOi.net
何インチのノート使ってるんだ……?まさかそっちがそもそも小さいとは思わんかったわ

167:名前は開発中のものです。
20/01/20 06:26:23.40 3GyQd84/.net
デュアルディスプレイという選択肢

168:155
20/01/20 10:27:29.13 PqKPcOnL.net
>>166
13インチです^^;スペックは問題無いんですが
画面は小さいの買ってしまってたんで、、
Unityで作りたいゲームがファミコン風だったんで
いけそうだと思ってるんです。
話しついでにもうひとつだけ相談させてほしいのですが
自分はファミコン風(256×240)という解像度低いゲームを制作しています。
ドット絵が崩れないように現在すべての画像のPixels Per Unitを「1」にしているんです。
こうすると低解像度(16×16のプレイヤーキャラとか)の画像たちが
ゲームビューをいくらズームアップしても崩れないんです。
しかしそのこと?で別の困ったことがあるんですが
ピクセル移動を想定した数値を入れると
まるで1ミリずつの移動みたいに牛歩ってしまうんです。
(ジャンプもちょびちょびしか動かない)。
本来、16の幅しかないプレイヤー画像なんで
毎フレーム5も入れてやるとスムーズに進むように見えるはずが
現状毎フレーム50を入れてやらないとスムーズに見えません。
なぜ十倍もの値にしないといけないのかわかりません。
ファミコン風のゲーム制作を独学でやろうとしてる状態なんで
これが正解なのかもわからず、、、同じ苦労を分かち合える人もおらず
不安なんですが、
16×16の画像に対して、
この何倍もの数値を入れなきゃスムーズな移動にならないのは
どうしてでしょうか?
Pixels Per Unitを「1」にしたせいだとするなら
Pixels Per Unitの値とは本来何を想定して決めるものなのでしょうか。
お手数かけてもうしわけないのですが
本当に困っていまして、そこら辺のこと教えていただけると助かります。

169:155
20/01/20 10:29:30.00 PqKPcOnL.net
>>167
>デュアルディスプレイ
それもありですね、、
13インチであまりに支障がある場合は
検討したいと思います。
ありがとうございます。

170:名前は開発中のものです。
20/01/20 10:59:54.15 /eP03yfp.net
13インチで開発とか苦行すぎるだろw

171:155
20/01/20 11:12:39 PqKPcOnL.net
>>170
そんなこと凹むこと言わないで(^^;)

172:名前は開発中のものです。
20/01/20 11:14:33 3OCzu0qv.net
>>168
Pixel per unitは一般的にはタイルのサイズにする。
スーパーマリオで言うとブロック1個分。
そうすると、座標がキリのいい数字になるのでなにかと便利だから。

そして、ドットが崩れないようにレンダリングしたい場合は、package managerからインストールできる2D Pixel Perfectを使うといいかもしれない。

173:名前は開発中のものです。
20/01/20 11:33:00.35 hAo3BM7z.net
>>168
>Pixels Per Unitの値とは本来何を想定して
FPSって分かる? FramePerSecond 秒あたりのフレームだよね
じゃPPUは、字の通りでUnitあたりのピクセルの数となる
ユニットはScene画面に出てる四角い枠の事、
PPUが通常100になってるけど、これは1unitあたり100ピクセル表示すると意味
ちなに1unitがゲーム内でどんな長さになるかは公式参照、それが動くスピードにも関係する
URLリンク(docs.unity3d.com)
で、こんな2つの画像があったとしよう
URLリンク(i.gyazo.com)
これをそのまま100で取り込むと見得ないほど小さくなる、1にすればめちゃ大きくなるし、当然2つの画像は違う大きさのままになる
これを同じにするためにPPUをそれぞれ16、32にする、すると
URLリンク(i.gyazo.com)
このように同じ大きさで収まる訳
こんなんで分かるかな?

174:名前は開発中のものです。
20/01/20 11:37:29.53 w54rhdgo.net
にじむ場合はFilterModeをPoint(のFilter)に変更するといいよ

175:155
20/01/20 12:33:25.92 PqKPcOnL.net
>>172
ありがとうございます、>>173のレスも考慮した上で
PPUは「1」だったのを「8」にしました。
妥当でしょうか?
実は2D Pixel Perfectもすでに導入したんですが
使い勝手がまだ微妙で、、、詳しく解説してくれてるページが
そんな無くて、、
>>173
ありがとうございます。
めちゃくちゃわかりやすく理解が進んだ感じがしました。
一応理解したまとめを報告しますと
1unit=sceneviewに見えるグリッドの1マス
PPU=グリッドの1マスに収まるピクセル数
つまり、各画像に設定するPPUは
この画像はそのPPUを想定したサイズにする、ということ。
なので各画像のサイズを任意に決めれる。
ということでよろしいでしょうか?
>>174
ありがとうございます。
調べてすでにそうしております。

176:名前は開発中のものです。
20/01/20 12:35:27.37 vt7bcNpw.net
>>170
個人製作で規模小さけりゃ気にならないです。
個人差ですかね。

177:155
20/01/20 12:36:10.56 PqKPcOnL.net
昨日の質問と違い
ありがたいレスをいくつも頂けて、
泣きそうです。
三人様、ありがとうございます。

178:名前は開発中のものです。
20/01/20 12:55:49.34 vt7bcNpw.net
泣きそうだと?中途半端な奴め、泣け!w

179:155
20/01/20 12:56:15.91 PqKPcOnL.net
すみません、調べてもわからず解決してないことが他にもあって、
どなたかこれ原因わかりませんか?(^^;
URLリンク(download1.getuploader.com)
これは自分のメインカメラのインスペクタなんですが
Sizeの項目、どのブログを拝見しても
「想定する画面サイズの半分の数値(画面の横幅が400なら200)を入れましょう」
って書いているのに、自分はここの数値をいじれないんです。
数値を変えても決定すると元の数字(ここでは画像にある7)に戻るんです。
この項目に矢印をあてて左右のドラッグでも数値は動きません。
なぜですか?
皆さん、当たり前のようにここの数値は任意で決めれるみたいに書いてあるので
非常に困惑しております。。。

180:名前は開発中のものです。
20/01/20 13:22:23.52 w54rhdgo.net
>>179
まっさらな新規のプロジェクトでもダメですか?

181:名前は開発中のものです。
20/01/20 13:29:27.18 w54rhdgo.net
もし180の状態で大丈夫なら、CinemachineBrainが悪さしていると考えられます
当方。2019.2.17f1ですが、まっさらな状態では全く問題なくsize変更できるので
そちらの環境問題か、もしかしたらエディターのバージョンによるバグか難しいとこです
もしまっさらな状態でも同じ症状なら、エディターのバグも考えられるのでバージョン合わせてこちらでも確認してみますのでバージョン教えてくれると助かります
バグと確認できたら、それはもうunityさんに報告するしかないような・・・

182:155
20/01/20 23:15:35.35 PqKPcOnL.net
>>181
レスありがとうございます。
さきほど仕事から帰り確認が遅くなりました。
まさに181さんのご指摘通りでした、、、
「Cinemachine Brain」のチェックを外すと
なんと数値が好き放題変更できました。
「悪さしている」とのことですが、、これはどういうことでしょうか
Cinemachine Brainはチェックを外したままでいいのでしょうか?
それとも、Cinemachine Brainを削除してインストールし直した方がいいとかですか?

183:名前は開発中のものです。
20/01/20 23:23:06.93 FXjCh/jh.net
オート操作にBGMをくっつけて簡単なデモを作ってるのですが毎回毎回微妙に音ズレがしてしまいます
フレームを30に固定しても駄目でした、何か重い操作があるとBGMと同期がとれなくなってしまうみたいですが
どうにかして同期を取る方法はないでしょうか?

184:名前は開発中のものです。
20/01/21 00:42:25.80 xWdssdmX.net
>>183
デモならタイムライン使うのが楽でいいんじゃない?
もしくはゲーム時間の進行をaudio sourceのtimeから作るようにすればズレないんじゃないかね

185:名前は開発中のものです。
20/01/21 10:33:07.11 4lKB/S8y.net
>>182
アセット関連なんで作者に聴くのがいいと思うけど
URLリンク(blogs.unity3d.com)
とりあえずカメラはViutualCameraの設定を変えるんじゃないかな?
何が原因か突き止めるには、プロジェクトを単純化するに限るので
まっさらなプロジェクトにCinemachineBrainだけ入れてみてどうなるかですね

186:155
20/01/21 12:35:35.08 MXzB69W0.net
>>185
>まっさらなプロジェクトにCinemachineBrainだけ入れてみてどうなるか
これを試してみようと思います。
なんにせよ原因を当ててくださったので非常jに助かりました。
ありがとうございます。

187:名前は開発中のものです。
20/01/21 16:25:37.81 q2cUKp57.net
クォータービューのマップを作ろうと
自分で打ったドットタイル32×32(png)をタイルパレット(isometric)にDDしても表示されないのですが何故ですか?
assetsには表示されてます

188:名前は開発中のものです。
20/01/21 16:33:51.87 q2cUKp57.net
すいません解決しました

189:名前は開発中のものです。
20/01/21 18:04:38.26 yyMJ8NI+.net
mac版バージョン2018.4.11f1
unityにautosave機能を追加したいんだけど
有志配布のものはすべて2018には対応せず…
良いのない?
二時間頑張ったのがパー、もう嫌だorz

190:名前は開発中のものです。
20/01/21 18:15:08.15 yyMJ8NI+.net
あった
解決しました

191:名前は開発中のものです。
20/01/22 11:09:38.22 tfrN0HGP.net
                    \     ,
             、   |      ヽ  /
             \  |     x|ー/‐- 、    r‐、
           , -―\l_ /`ヽー==ミx、 \ r勺人__
          /    / !|   \   丶  l:|;;/;;;;___;;}
         /:/  / / / 从 {丶  \   :\弌;;;;/ //
          l:/ /  / 〃/l/ヽ \\-‐\:::.....lハ: 〉;;三;;(
        / /  /|  | l|-|‐-、\ト ィ==y!:::::/l::| {又又}          x%フ广l
    ー=彡イ:::/::. ,.::|::..::Vィ==ミ  、 \  ノ/! |/‘7¬イ        /%゚//
          |:::l|::::|::|/乂:::::ヾ   _, -―1/l|ノ}/  /  /           //゚//
          |:::i|::人| l |≧ァ`` ヘ/   | 八 |  /  /        /ヽ_彡 '
          乂l'   \/ / ゝ、 \ _,ノ /  \/  /      / /
                /丶{   `≧ァーく( _,> '´  /      Xニ⊇:′
          /       /⌒ ¬f工¨|    /、 \  ./  r「’|
          /      /     ||__」 レ=≦、    / /「| | l|
        /        /l  , -―ァ≠¨l | ;/ |\,_/ /}又又i「 - 、
        / /     /,,;|   /,; 〃ヽノ/, |/ ∠_ ‘7¬イ   \
        / /  _   /,,;;;l>'´,,,;;;; /  / /^l/ /;;;/ `Y   | \  丶
        / /  〈 〈>'´; .;;;;;;;;;;;;;;;;;;;;;;/_/   // /`≧'‐ 、ヽ  〉  丶   |
       ,':/i  ∧_〉,,;;;;;;;;/´ ̄ ̄´   / /ヽ\    `>-'^\  ヽ |
      /' |  ∨,,;;;;;;;;;/         / /   o:} }     ||   |   l |
     ,:   |   \;;;;;;;|   /\./ /    .//       ||   |   | /
     | |      \|   \   x/    .//       ||  /  /'
      爪 弾 く は 荒 ぶ る 調 べ ! キ ュ ア メ ロ デ ィ !
スイートプリキュア♪の北条響

192:名前は開発中のものです。
20/01/22 11:41:29.44 fkmqYQ67.net
htmlが流行っていた時期、タグのコピペとちょっとした改変でホームページを作ってました
unityド素人でもそんな感じでゲーム作れます?本に書いてある通りの丸コピーではなく
コンセプトはスクリプトを書かないゲーム作りです!

193:名前は開発中のものです。
20/01/22 12:04:57.58 Gjke/PAp.net
無理

194:名前は開発中のものです。
20/01/22 16:38:52 jAdrPsCn.net
2020でブループリントみたいなやつ入ってくるんじゃなかったっけ

195:名前は開発中のものです。
20/01/22 20:26:41.16 FnFWF1+H.net
ブループリントはほぼスクリプトなんだわ…
関数がノードにパッケージングされてるだけでやってる事は変わらん

196:名前は開発中のものです。
20/01/22 22:53:26.09 r+2nxT98.net
UniRx 使い始めたら、Awake()、Start() の中に処理が集中するんだけど、
そもそもゲーム開発ではメソッド毎のテストなんての書かない感じ?
てか Unity 開発では ユニットテストとかのテストFWはない?
Visual Studio のクラスビューでメソッドが Awake()、Start() しかない
スクリプトが増えてきて不安になる…

197:名前は開発中のものです。
20/01/22 23:20:39.00 6KrHfY+K.net
Test Runner�と呼ばれる機能がUnityにはあります
ぐぐっただけなので内容までは知らん

198:名前は開発中のものです。
20/01/22 23:41:51.51 9P6fyKWd.net
UniRxって何が良いの?
jQueryみたいなもんでGCが致命的になるゲーム開発だと地雷でしかないと勝手に思ってるけど

199:名前は開発中のものです。
20/01/23 00:09:52.21 BeWKcfCr.net
>>197
ありがとう、自分でも探してみたけど、Unity Test Runner が
公式にあるみたいなんで試してみる。
>>198
むしろ自分が初心者だからこそ UniRx が凄く便利だと感じる。
例えば、Transform の位置情報を加減することと、
Rigidbody に力を加える動きを書こうすると、
それぞれ、Update() と FixedUpdate() に分散して書くと思けど、
UniRx なら Start() の中に両方書けるので分かりやすい。
また、普通にプレイヤーコントローラのスクリプトとか書いたら、
Update() と FixedUpdate() の中身が "if 分岐” だらけになると推測するけど、
UniRx なら、コードから "if 分岐” がなくなりスッキリ分かりやすくなった。
でも確かにGCパフォーマンスは心配。

200:名前は開発中のものです。
20/01/23 00:35:20.23 BeWKcfCr.net
あと UniRx だと、何秒後に とか、何フレ後に とか、何回とか、ゲームに必要な処理が簡単に書ける。
おそらく、まったくのプログラム初心者は UniRx から始めた方が良いとさえ思える。
自分は既に書いてしまった膨大なコードを UniRx を使用するコードにリファクタしつつあるけど、辛い…
誰か最初に教えといてくれよと思った。
まあ Unity初心者の個人的な感想だけどね。

201:名前は開発中のものです。
20/01/23 01:04:15.17 k7QW6u8C.net
>>199
UniRxのTriggersをメインで使ってるってことね

202:名前は開発中のものです。
20/01/23 06:19:45.63 xz19b8uw.net
こんな早朝に人いるかな?
Rigidbody2D.AddForceを使ってジャンプさせているんだけど
rigidbody2D.AddForce(Vector2.up * 数値);って感じで。
しかしこれではジャンプ力(高さ?頂点?)を決めてやれるだけで
ジャンプそのもののスピードはいじれない。
ぽい&#12316;んってジャンプじゃなくて
ヒュンッとしたジャンプをさせたいんですが良い方法あります?
C++時代なら毎フレームに加える数値を増やせばよかっただけなんですよねえ

203:名前は開発中のものです。
20/01/23 08:02:49 BeWKcfCr.net
>>202
C++時代みたいが良ければ Update() で Transform に毎フレームに加える数値を増やせば出来るよ。

AddForce は

204:名前は開発中のものです。
20/01/23 08:04:53 BeWKcfCr.net
AddForce では加える力を決めれるだけで、それで高さ?頂点?を決めれるわけじゃない。

205:名前は開発中のものです。
20/01/23 08:32:54 BeWKcfCr.net
あと多分 質問の状況からすると rigidbody.velocity += Vector3.up + 調整値 で、
FixedUpdate() で、物理フレーム毎に調整値をいじる方が望みの動作を得られる気がする。

でも、それが物理挙動かと言われれば違う気がするし、それなら素直に Transform の数値増減でいいじゃんとも思う。
この辺りどうなんだろうね?

rigidbody.AddForce だけでまともなゲームのジャンプになるの?

206:名前は開発中のものです。
20/01/23 08:43:29 sYrsRPW1.net
ジャンプの仕方が目標みたいだから、rigidbodyを極めてもよし、transformでコントロールしてもよし。
好きな方で。
addforceなら、velocityに、加えてgravity値をコントロールするとか試行錯誤だね。がんばれ。

207:名前は開発中のものです。
20/01/23 09:05:35.69 o31+m3nu.net
キャラクターとかはキネマティックにして物理エンジンに任せずに自分で動かした方が思った通りの動きになるんだよね

208:名前は開発中のものです。
20/01/23 10:00:04.83 KLj1RF1a.net
物理計算サイトが検算するのに捗る
自分でスプレッドシートつくる方が身につくけど

209:名前は開発中のものです。
20/01/23 13:04:24.91 rlCEa5FQ.net
>>202
単純にジャンプの速度を上げたいってだけなら、重力を大きくするか、
特定のキャラクターだけそうしたいならRigidbodyのGravityScaleを大きくするとかかな。ただしこれだと落下速度も速くなっちゃうけど。
一時的に物理計算を無視して完全に制御したいなら、transformよりも
Rigidbody.MovePositionを使って動かす方がいいかも。
これなら周りのオブジェクトに物理的な影響を与えながら移動できるし、
fixedupdate内で書くことになるので
「普段は物理無視したいけど爆風に巻き込まれた時は物理に従う」
みたいな実装が楽だよ。

210:名前は開発中のものです。
20/01/23 17:48:04.91 9HsMMURI.net
おっぱいも物理エンジンよりも手で揺らした方がイキイキしている気がする

211:名前は開発中のものです。
20/01/23 17:51:59.32 sYrsRPW1.net
それは物理エンジンが…あ、いやなんでもない。

212:名前は開発中のものです。
20/01/23 20:32:46.84 o/nrz+aB.net
AnimationControler みたくステートマシーンをグラフィカルに編集できるアセットってないっすかね?
AnimationControler と StateMachineBehaviour がありゃステートマシンでやるようなこと何でもできるじゃないのって思ってたけど、
Time.timeScale=0 したら setTrigger しても状態遷移しないし、
やっぱりステートマシンのすべてを AnimationControler に任せるのは無理があるのかなとか思って。
なければ State パターン でハードコーディングすべきなのかなやっぱり。

213:名前は開発中のものです。
20/01/23 20:40:25.80 o31+m3nu.net
>>212
animator.updateMode = AnimatorUpdateMode.UnscaledTime;

214:名前は開発中のものです。
20/01/23 21:43:00.61 o/nrz+aB.net
>>213 うお、そんなオプションが…。解決しました。感謝です。

215:名前は開発中のものです。
20/01/24 04:03:03.22 +Fsi074W.net
すみません、変な質問なんですが Input.GetAxisRaw("Horizontal")
この処理をキーを離さずに一度リセットして認識し直させる方法はありませんか?
、、というのも「ある状況」になるとキーを押しっぱなしのままだと
Input.GetAxisRaw("Horizontal")が認識されない状態になるバグがあり、
一度でもキーを放して押し直すとちゃんと認識されるようになるんです。
その原因がどうにもわからないので、その状況になれば毎度リセットさせたいな、と。
具体的に言いますと
プレイヤーが死んだら即定位置からリスタートする状況のゲームがあって
移動方法はInput.GetAxisRaw("Horizontal")からキー入力を受け取るんですが
プレイヤーが死んだ時に例えば右キーを押しっぱなし(「+1」を受け取り続ける)で死んだとして
押していた右キーをそのまま押したままリスタートを向かえますと
開始直後右入力を認識してない(Input.GetAxisRaw("Horizontal")で受け取る値は0のまま)状態となってしまうんです。
ですが一度キーを放して押し直すと「+1」を受け取るのです。
これだけ聞くとよくあるソースミスと思われるでしょうが、ちょっと
Input.GetAxisRawのバグっぽいんですよね。
とりあえず、プレイヤーが死んでリスタートされる時に
例えばvoid Start()の中に(Input.GetAxisRaw("Horizontal")を
取得しなおす処理を書いてやりたいんです。
これが不思議なことに(Input.GetAxisRaw("Horizontal")を書いただけじゃ
取得しなおしてくれないんですよね、、、、

216:名前は開発中のものです。
20/01/24 07:02:28.39 9g9ZzaxQ.net
バグっぽいと言うのはどこの情報ですか?

217:名前は開発中のものです。
20/01/24 07:54:41 1mzH9O5r.net
>>215
普通に考えてリスタートの処理の仕方に問題があるかと。
ゲームオーバーで最初に戻るにしても、インプット関数としては、ゲームオーバーしようがしまいが関係ない。なら、リスタートまでに何か影響のある処理を入れてしまっている事が考えられる。
例えば、start()に取得し直しとか書いてるけど、startをまた呼び出してるの?すまん、私はそんな表記はした事ないから異常に見えました。

218:名前は開発中のものです。
20/01/24 12:14:44.83 JiuRt8jn.net
プレイヤーオブジェクトをDestroyしてる説

219:名前は開発中のものです。
20/01/24 16:44:42.21 YxoFqWNA.net
おこなの?

220:名前は開発中のものです。
20/01/24 21:18:19.49 lHO70wOG.net
質問です
編集ソフト間ではテクスチャやマテリアルをFBXに同梱するのは珍しくありませんが、Unity上ではあまり見かけません
単にUnityではFBX内のデータを編集できないから邪魔という理由かなと思っていますが、他にも理由があるのでしょうか?

221:名前は開発中のものです。
20/01/24 21:48:57.86 +Fsi074W.net
>>217
説明が難しいんですが頑張りますね
>普通に考えてリスタートの処理の仕方に問題がある
確かにその通りです
でも別にまだ作り始めですから複雑なことしておらず
Input.GetAxisRaw("Horizontal")で左右移動
Input.GetKey("space")でジャンプ。
バグが起きるのは方向キーを押しっぱなしで一度でもジャンプしたあとに
(その方向キーを押しっぱなしのまま)死亡してリスタート後もその方向キーを
押しっぱなしのままでいると
Input.GetAxisRaw("Horizontal")が認識されない状態になるというものです。
あと、>>218さんの言う通り、
プレイヤーオブジェクトをDestroyしたあとリスタートしています。
ちなみに方向キーは押しっぱなしでも一度もジャンプせずに死ぬと
その方向キーを押しっぱなしのままリスタートしても
Input.GetAxisRaw("Horizontal")が認識され
開始後キャラクターは押している方向に進むんです。
つまり
Input.GetAxisRaw("Horizontal")が入力状態のまま
Input.GetKey("space")を入力し、
Input.GetAxisRaw("Horizontal")の入力を解除しないまま
リスタートすると
押しっぱなしのInput.GetAxisRaw("Horizontal")は仕事をしてくれなくなる
状況です。
(で、一度入力を放すと正常になる)

222:名前は開発中のものです。
20/01/24 21:50:33.57 +Fsi074W.net
ちなみにプレイヤーが死んだ時、プレイヤー作成時に
Input.GetKeyとInput.GetAxisRaw
を記載したりはしておりません。
そもそもInput.GetAxisRaw("Horizontal")の入力を阻止することなんて
こちらがどうこうできるものでは無いはずなんです
で、例えば
int x = Input.GetAxisRaw("Horizontal")としてやって、
xに入る値の動きをデバッグして見ていますが
死ぬ前は右が押されている間「1」が入り続けるんですが
死んだあとDestroyされ右キー押し続けている状態でも「0」が入ってきます
で、そのあとリスタートするわけですが
死ぬ前から押し続けていた右キー押してる間はずっと0のままなんですよ
これはおかしいと思いませんか?

223:名前は開発中のものです。
20/01/24 22:41:41.98 9g9ZzaxQ.net
いやそのスクリプトがデストロイしてるオブジェクトについてたらダメじゃね
って話しじゃないか

224:名前は開発中のものです。
20/01/24 23:07:02.42 rtAyfksW.net
リスタートを実装しているなら、わざわざDestroyしなくてもいいんでは?と思うけど
仮にUnityの不具合で
instaniateされたゲームオブジェクトが継続中のHorizontalを受け付けないのだとしても、Destroyせず最初のプレイヤーのゲームオブジェクトを使い回せばいいんでは

225:名前は開発中のものです。
20/01/24 23:07:28.97 +Fsi074W.net
>>223
おっしゃりたいことはわかります。
もしそういう仕様(デストロイしたオブジェクトに書いてた場合は一度放さないと機能しない)、
なら
ジャンプをせずに(Input.GetKeyを使わずに)
死んでリスタートした場合は
押しっぱなしのInput.GetAxisRaw("Horizontal")が
開始後そのまま機能してるのがおかしいと思いませんか?
要はジャンプしてから死んでリスタートした場合だけ機能しないんです。

226:名前は開発中のものです。
20/01/24 23:18:30.20 9g9ZzaxQ.net
>>225
リスタートすると言うことは新たなオブジェクトだよね
新しいスクリプトなんだから動いて当然だと思うけど
なんなら明日簡単なサンプル作って検証してみようかね

227:名前は開発中のものです。
20/01/24 23:18:50.47 +Fsi074W.net
>>224さんのレスも考慮させて頂いて
一度デストロイ方式を辞めてみましたが
やはり同じ症状でした。

228:名前は開発中のものです。
20/01/24 23:24:37.56 7QzIJzpr.net
>>225
リスタートってどんな処理してるの?
シーンの読み込み直し?
まったく関係ないゲームオブジェクトのUpdateで監視しててもそうなるの?

229:名前は開発中のものです。
20/01/24 23:27:42.92 +Fsi074W.net
むむ、これは、、本当にバグなのかもしれません。
今、限りなくソースをそぎ落としていってるんですが
それでもその症状が出ます。
ほんと、プレイヤーのスクリプトでやってることは
x = Input.GetAxisRaw("Horizontal");
if(x==0){
//止まる処理
}
else if(x>0){
//右へ移動処理
}
else if(x<0){
//左へ移動処理
}
if(Input.GetKeyDown("space") ){
 ジャンプ処理
}
だけなんです。
リスタート後、xにすでに値が入らなくなるので
自分の移動処理やその他のスクリプトは関係無いはずです。

230:名前は開発中のものです。
20/01/24 23:30:48.57 +Fsi074W.net
>>228
シーンの読み込み直しです。
void RestarScene(){
Scene thisScene = SceneManager.GetActiveScene();
SceneManager.LoadScene(thisScene.name);
}

231:名前は開発中のものです。
20/01/24 23:37:49.39 +Fsi074W.net
これは、、、、今
大変なことが発覚しました。。。

232:名前は開発中のものです。
20/01/24 23:39:22.19 YxoFqWNA.net
>>221
1. 方向キー(←押しっ放し)
2. スペース
3. スタート
これで最初の方向キーの入力が消えるってことなら、
安物のキーボードはそこまでの同時入力に対応していないからなとしか
Unityの問題でなくパソコンの仕様だよ

233:名前は開発中のものです。
20/01/24 23:40:43.33 +Fsi074W.net
このバグの発動条件が
左右キーを押しっぱなし中に「ジャンプした」あと死亡したらと思っていたんですが
違いました。
なんと、左右キーを押しっぱなし中に
「キーボードの他のボタン(どれでも)を押した」あと
死亡したらでした!!!
なんと、ゲームで使ってないキーを押しても、この症状が出ます!!!
これはどういうことでしょうか???????????

234:名前は開発中のものです。
20/01/24 23:42:33.68 rtAyfksW.net
シーンを移動するとInputがリセットされる件
で検索
url貼ろうとするとNG食らうので

235:名前は開発中のものです。
20/01/24 23:45:43.21 +Fsi074W.net
>>232
>これで最初の方向キーの入力が消えるってことなら
いや、私の説明を誤解してます。
2. スペース
の後も「1. 方向キー(←押しっ放し)」は生きてます。
そのままその方向に歩いていくし、放せば止まります。
ただ、1.を押しっぱなしのままで歩いて敵に当たったりして死亡したあと
再スタート後に利かなく(Input.GetAxisRawが左右を認識しない)なってるんです。
押しっぱなしのままなら、です。
説明が難しい。。。

236:名前は開発中のものです。
20/01/24 23:55:45 +Fsi074W.net
>>234
検索して拝見しましたが
非常に勉強になるブログでした。

しかし自分のケースと少し違う気がしますがどうですか?

なぜなら、自分のケースは
確かに二つ目のキー入力をしますが
その後、その二つ目を放して、シーンを移動します。
つまりシーンをまたぐ時はキー入力は1つなんです。
そのブログのケースと違う気がするのですがどうですか?

あと、もひとつ言いますと
ゲットキーの設定関係なく、
二つ目のキーはパソコンのどのボタンでも
押したら発生します。。。

つまり、
Input.GetAxisRaw("Horizontal")
で右方向キーを入力したまま
パソコンの「w」だの「s」だのどこでも押したあと
(それこそ"Horizontal"では受け付けてない上キーとかでも)
右方向キーを入力したまま死亡して
シーンをやり直すと

右方向キーを入力が利いてない状態でスタートするんです。

237:名前は開発中のものです。
20/01/25 00:44:13.23 lrP57LvS.net
これはもう熟練者様に確認してもらいたいので
シンプルにしたものをパッケージ化しました。
これで症状を確認していただけませんでしょうか。
URLリンク(ux.getuploader.com)
まずは
ゲーム開始して、右キーを押しっぱなしで死んでください。
リスタートしても右キーを押しっぱなしです。
そしたらリスタートしてもプレイヤーは右に進むはずです。
そりゃそうです、右キーを押しているからです。
次に、
右キーを押しっぱなしで死ぬのは一緒ですが
その途中に、パソコンのキーボードをどれかひとつ、押してください。
そっちは押しっぱなしでは無く、一度押すだけです。
この間も右キーの方は押しっぱなしです。
で、そのまま死んでください。
すると、リスタート後、プレイヤーは先ほどとは違い
右に進まないんです。右を押している限り、移動はできません。
右を押しながらジャンプはできますが、右を押している限り、移動はできません。
この症状の原因を知りたいです。 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)


238:名前は開発中のものです。
20/01/25 00:47:53.82 lrP57LvS.net
ちなみにバージョンは2018.4.11f1です

239:名前は開発中のものです。
20/01/25 09:41:49.47 6e7MKbrk.net
とりあえずもっとシンプルにして修正したよ
URLリンク(thuploader.orz.hm)
恐らく原因はLoadSceneでしょ、シーンロードするという事はそれまで居たシーンは
リセットされると思う、だから入力が利かなくなるんじゃないかな
とりあえず同シーンリスタートしたら問題なく出来た

それから、コライダーとか整理した方がいいかな同じオブジェクトに二つ付いてたり
場所かぶっていたり、なんか無駄がおおかった

240:名前は開発中のものです。
20/01/25 09:43:38.51 6e7MKbrk.net
あ、ちなみに制作は
2019.2.17f1で取り込み確認、パッケージ化
2019.2.5f1でも確認
2018年バージョンは当方もうすててたので、未確認
でも特にバージョン違いの事してないから問題ないと思います

241:名前は開発中のものです。
20/01/25 09:53:45.45 6e7MKbrk.net
>>293
>恐らく原因はLoadSceneでしょ、シーンロードするという事は
すまん、これ原因究明してないから、これが原因かどうか不明なので
ちょい出かけるからまた戻ったらシーン展開でも症状確認してみるわ

242:名前は開発中のものです。
20/01/25 10:51:31.73 lrP57LvS.net
>>239
ありがとうございます
修正感謝します
確認してみます!
>シーン展開でも症状確認してみるわ
はい!もちろん修正されたものを見て自分でも原因を考えてみますが
ぜひとも宜しくお願いします。

243:名前は開発中のものです。
20/01/25 11:51:30.29 52iKK3mn.net
優しいスレ

244:241
20/01/25 13:15:17.01 AAVfnYWp.net
URLリンク(i.gyazo.com)
こんな感じでリスタートでLoadSceneしてみたら、症状でましたね
LoadSceneAsyncでも同様なので、やはりシーンロードするとバッファが詰まるのでしょかね
とりあえず途中経過です
なぜLoadSceneでキー2つ目押でなるのかについてはなんか大変そうだな根本原因掴むのは

245:名前は開発中のものです。
20/01/25 13:30:42.22 4hPFEDML.net
>>234 の記事がそのまんま答えじゃない?
この記事によると「シーン遷移時にInputはリセットされる」というのが仕様で
今回の場合「シーン読み込みしてるのに横移動入力が拾えてた」というのがむしろバグらしい
で、ちょっと試してみたけど
Inputを拾うオブジェクトをDontDestroyOnLoadにして破棄しないようにしても
普通にシーン遷移を行うとInputはリセットされてしまうようなので
どうしてもシーン読み直しで、かつInputを継続して拾いたいなら
>>234 の記事にあるようにLoadSceneでLoadSceneMode.Additiveで読み込むしかなさそう。
ただ、もし自分だったら
・シーンの読み込み直しなしでリスタートを実装する
・リスタート時に方向キーから指が離れるような演出にする
・気にしない
のどれかにすると思う


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