[過去ログ] 【ゲームエンジン】Unity初心者質問スレBuild3 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
222: 名前は開発中のものです。 [sage] 2020/01/24(金) 21:50:33.57 ID:+Fsi074W(3/11) AAS
ちなみにプレイヤーが死んだ時、プレイヤー作成時に
Input.GetKeyとInput.GetAxisRaw
を記載したりはしておりません。

そもそもInput.GetAxisRaw("Horizontal")の入力を阻止することなんて
こちらがどうこうできるものでは無いはずなんです

で、例えば
int x = Input.GetAxisRaw("Horizontal")としてやって、
xに入る値の動きをデバッグして見ていますが
死ぬ前は右が押されている間「1」が入り続けるんですが
死んだあとDestroyされ右キー押し続けている状態でも「0」が入ってきます
で、そのあとリスタートするわけですが
死ぬ前から押し続けていた右キー押してる間はずっと0のままなんですよ
これはおかしいと思いませんか?
223
(1): 名前は開発中のものです。 [] 2020/01/24(金) 22:41:41.98 ID:9g9ZzaxQ(2/3) AAS
いやそのスクリプトがデストロイしてるオブジェクトについてたらダメじゃね

って話しじゃないか
224
(1): 名前は開発中のものです。 [sage] 2020/01/24(金) 23:07:02.42 ID:rtAyfksW(1/2) AAS
リスタートを実装しているなら、わざわざDestroyしなくてもいいんでは?と思うけど

仮にUnityの不具合で
instaniateされたゲームオブジェクトが継続中のHorizontalを受け付けないのだとしても、Destroyせず最初のプレイヤーのゲームオブジェクトを使い回せばいいんでは
225
(2): 名前は開発中のものです。 [sage] 2020/01/24(金) 23:07:28.97 ID:+Fsi074W(4/11) AAS
>>223
おっしゃりたいことはわかります。
もしそういう仕様(デストロイしたオブジェクトに書いてた場合は一度放さないと機能しない)、
なら
ジャンプをせずに(Input.GetKeyを使わずに)
死んでリスタートした場合は
押しっぱなしのInput.GetAxisRaw("Horizontal")が
開始後そのまま機能してるのがおかしいと思いませんか?

要はジャンプしてから死んでリスタートした場合だけ機能しないんです。
226: 名前は開発中のものです。 [] 2020/01/24(金) 23:18:30.20 ID:9g9ZzaxQ(3/3) AAS
>>225
リスタートすると言うことは新たなオブジェクトだよね
新しいスクリプトなんだから動いて当然だと思うけど

なんなら明日簡単なサンプル作って検証してみようかね
227: 名前は開発中のものです。 [sage] 2020/01/24(金) 23:18:50.47 ID:+Fsi074W(5/11) AAS
>>224さんのレスも考慮させて頂いて
一度デストロイ方式を辞めてみましたが
やはり同じ症状でした。
228
(1): 名前は開発中のものです。 [sage] 2020/01/24(金) 23:24:37.56 ID:7QzIJzpr(1) AAS
>>225
リスタートってどんな処理してるの?
シーンの読み込み直し?
まったく関係ないゲームオブジェクトのUpdateで監視しててもそうなるの?
229: 名前は開発中のものです。 [sage] 2020/01/24(金) 23:27:42.92 ID:+Fsi074W(6/11) AAS
むむ、これは、、本当にバグなのかもしれません。
今、限りなくソースをそぎ落としていってるんですが
それでもその症状が出ます。

ほんと、プレイヤーのスクリプトでやってることは
x = Input.GetAxisRaw("Horizontal");
if(x==0){
//止まる処理
}
else if(x>0){
//右へ移動処理
}
else if(x<0){
//左へ移動処理
}
if(Input.GetKeyDown("space") ){
 ジャンプ処理
}

だけなんです。
リスタート後、xにすでに値が入らなくなるので
自分の移動処理やその他のスクリプトは関係無いはずです。
230: 名前は開発中のものです。 [sage] 2020/01/24(金) 23:30:48.57 ID:+Fsi074W(7/11) AAS
>>228
シーンの読み込み直しです。
void RestarScene(){
Scene thisScene = SceneManager.GetActiveScene();
SceneManager.LoadScene(thisScene.name);
}
231: 名前は開発中のものです。 [sage] 2020/01/24(金) 23:37:49.39 ID:+Fsi074W(8/11) AAS
これは、、、、今
大変なことが発覚しました。。。
232
(1): 名前は開発中のものです。 [sage] 2020/01/24(金) 23:39:22.19 ID:YxoFqWNA(2/2) AAS
>>221
221(1): 名前は開発中のものです。 [sage] 2020/01/24(金) 21:48:57.86 ID:+Fsi074W(2/11) AAS
>>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")は仕事をしてくれなくなる
状況です。
(で、一度入力を放すと正常になる)
1. 方向キー(←押しっ放し)
2. スペース
3. スタート
これで最初の方向キーの入力が消えるってことなら、
安物のキーボードはそこまでの同時入力に対応していないからなとしか
Unityの問題でなくパソコンの仕様だよ
233: 名前は開発中のものです。 [sage] 2020/01/24(金) 23:40:43.33 ID:+Fsi074W(9/11) AAS
このバグの発動条件が
左右キーを押しっぱなし中に「ジャンプした」あと死亡したらと思っていたんですが
違いました。

なんと、左右キーを押しっぱなし中に
「キーボードの他のボタン(どれでも)を押した」あと
死亡したらでした!!!

なんと、ゲームで使ってないキーを押しても、この症状が出ます!!!
これはどういうことでしょうか???????????
234
(2): 名前は開発中のものです。 [sage] 2020/01/24(金) 23:42:33.68 ID:rtAyfksW(2/2) AAS
シーンを移動するとInputがリセットされる件

で検索

url貼ろうとするとNG食らうので
235: 名前は開発中のものです。 [sage] 2020/01/24(金) 23:45:43.21 ID:+Fsi074W(10/11) AAS
>>232
>これで最初の方向キーの入力が消えるってことなら

いや、私の説明を誤解してます。

2. スペース
の後も「1. 方向キー(←押しっ放し)」は生きてます。
そのままその方向に歩いていくし、放せば止まります。
ただ、1.を押しっぱなしのままで歩いて敵に当たったりして死亡したあと
再スタート後に利かなく(Input.GetAxisRawが左右を認識しない)なってるんです。
押しっぱなしのままなら、です。

説明が難しい。。。
236: 名前は開発中のものです。 [sage] 2020/01/24(金) 23:55:45.35 ID:+Fsi074W(11/11) AAS
>>234
検索して拝見しましたが
非常に勉強になるブログでした。

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

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

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

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

右方向キーを入力が利いてない状態でスタートするんです。
237: 名前は開発中のものです。 [sage] 2020/01/25(土) 00:44:13.23 ID:lrP57LvS(1/6) AAS
これはもう熟練者様に確認してもらいたいので
シンプルにしたものをパッケージ化しました。
これで症状を確認していただけませんでしょうか。
外部リンク:ux.getuploader.com

まずは
ゲーム開始して、右キーを押しっぱなしで死んでください。
リスタートしても右キーを押しっぱなしです。
そしたらリスタートしてもプレイヤーは右に進むはずです。
そりゃそうです、右キーを押しているからです。

次に、
右キーを押しっぱなしで死ぬのは一緒ですが
その途中に、パソコンのキーボードをどれかひとつ、押してください。
そっちは押しっぱなしでは無く、一度押すだけです。
この間も右キーの方は押しっぱなしです。
で、そのまま死んでください。
すると、リスタート後、プレイヤーは先ほどとは違い
右に進まないんです。右を押している限り、移動はできません。
右を押しながらジャンプはできますが、右を押している限り、移動はできません。

この症状の原因を知りたいです。

Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)
238: 名前は開発中のものです。 [sage] 2020/01/25(土) 00:47:53.82 ID:lrP57LvS(2/6) AAS
ちなみにバージョンは2018.4.11f1です
239
(1): 名前は開発中のものです。 [sage] 2020/01/25(土) 09:41:49.47 ID:6e7MKbrk(1/3) AAS
とりあえずもっとシンプルにして修正したよ
外部リンク:thuploader.orz.hm

恐らく原因はLoadSceneでしょ、シーンロードするという事はそれまで居たシーンは
リセットされると思う、だから入力が利かなくなるんじゃないかな

とりあえず同シーンリスタートしたら問題なく出来た

それから、コライダーとか整理した方がいいかな同じオブジェクトに二つ付いてたり
場所かぶっていたり、なんか無駄がおおかった
240: 名前は開発中のものです。 [] 2020/01/25(土) 09:43:38.51 ID:6e7MKbrk(2/3) AAS
あ、ちなみに制作は
2019.2.17f1で取り込み確認、パッケージ化
2019.2.5f1でも確認

2018年バージョンは当方もうすててたので、未確認
でも特にバージョン違いの事してないから問題ないと思います
241
(2): 名前は開発中のものです。 [] 2020/01/25(土) 09:53:45.45 ID:6e7MKbrk(3/3) AAS
>>293
293(1): 名前は開発中のものです。 [] 2020/01/28(火) 23:12:05.94 ID:LfI/H2gH(2/2) AAS
>>289
やっぱりマウスロックかけないとダメなんだね
ありがとう、助かったわ
>恐らく原因はLoadSceneでしょ、シーンロードするという事は

すまん、これ原因究明してないから、これが原因かどうか不明なので
ちょい出かけるからまた戻ったらシーン展開でも症状確認してみるわ
242: 名前は開発中のものです。 [sage] 2020/01/25(土) 10:51:31.73 ID:lrP57LvS(3/6) AAS
>>239
ありがとうございます
修正感謝します
確認してみます!

>シーン展開でも症状確認してみるわ

はい!もちろん修正されたものを見て自分でも原因を考えてみますが
ぜひとも宜しくお願いします。
243: 名前は開発中のものです。 [sage] 2020/01/25(土) 11:51:30.29 ID:52iKK3mn(1) AAS
優しいスレ
244
(1): 241 [sage] 2020/01/25(土) 13:15:17.01 ID:AAVfnYWp(1) AAS
画像リンク


こんな感じでリスタートでLoadSceneしてみたら、症状でましたね
LoadSceneAsyncでも同様なので、やはりシーンロードするとバッファが詰まるのでしょかね

とりあえず途中経過です
なぜLoadSceneでキー2つ目押でなるのかについてはなんか大変そうだな根本原因掴むのは
245
(1): 名前は開発中のものです。 [sage] 2020/01/25(土) 13:30:42.22 ID:4hPFEDML(1) AAS
>>234 の記事がそのまんま答えじゃない?
この記事によると「シーン遷移時にInputはリセットされる」というのが仕様で
今回の場合「シーン読み込みしてるのに横移動入力が拾えてた」というのがむしろバグらしい

で、ちょっと試してみたけど
Inputを拾うオブジェクトをDontDestroyOnLoadにして破棄しないようにしても
普通にシーン遷移を行うとInputはリセットされてしまうようなので
どうしてもシーン読み直しで、かつInputを継続して拾いたいなら
>>234 の記事にあるようにLoadSceneでLoadSceneMode.Additiveで読み込むしかなさそう。

ただ、もし自分だったら
・シーンの読み込み直しなしでリスタートを実装する
・リスタート時に方向キーから指が離れるような演出にする
・気にしない
のどれかにすると思う
246: 名前は開発中のものです。 [sage] 2020/01/25(土) 14:50:49.41 ID:rO5N4tZX(1) AAS
シーンごとのリセットは
アクションゲームなら必須に近いし
ゲーム制作に支障が出そうな仕様だなぁ
1-
あと 756 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.017s