[過去ログ]
【ゲームエンジン】Unity初心者質問スレBuild3 (1002レス)
【ゲームエンジン】Unity初心者質問スレBuild3 http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
215: 名前は開発中のものです。 [sage] 2020/01/24(金) 04:03:03.22 ID:+Fsi074W すみません、変な質問なんですが 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")を書いただけじゃ 取得しなおしてくれないんですよね、、、、 http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/215
221: 名前は開発中のものです。 [sage] 2020/01/24(金) 21:48:57.86 ID:+Fsi074W >>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")は仕事をしてくれなくなる 状況です。 (で、一度入力を放すと正常になる) http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/221
222: 名前は開発中のものです。 [sage] 2020/01/24(金) 21:50:33.57 ID:+Fsi074W ちなみにプレイヤーが死んだ時、プレイヤー作成時に Input.GetKeyとInput.GetAxisRaw を記載したりはしておりません。 そもそもInput.GetAxisRaw("Horizontal")の入力を阻止することなんて こちらがどうこうできるものでは無いはずなんです で、例えば int x = Input.GetAxisRaw("Horizontal")としてやって、 xに入る値の動きをデバッグして見ていますが 死ぬ前は右が押されている間「1」が入り続けるんですが 死んだあとDestroyされ右キー押し続けている状態でも「0」が入ってきます で、そのあとリスタートするわけですが 死ぬ前から押し続けていた右キー押してる間はずっと0のままなんですよ これはおかしいと思いませんか? http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/222
225: 名前は開発中のものです。 [sage] 2020/01/24(金) 23:07:28.97 ID:+Fsi074W >>223 おっしゃりたいことはわかります。 もしそういう仕様(デストロイしたオブジェクトに書いてた場合は一度放さないと機能しない)、 なら ジャンプをせずに(Input.GetKeyを使わずに) 死んでリスタートした場合は 押しっぱなしのInput.GetAxisRaw("Horizontal")が 開始後そのまま機能してるのがおかしいと思いませんか? 要はジャンプしてから死んでリスタートした場合だけ機能しないんです。 http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/225
227: 名前は開発中のものです。 [sage] 2020/01/24(金) 23:18:50.47 ID:+Fsi074W >>224さんのレスも考慮させて頂いて 一度デストロイ方式を辞めてみましたが やはり同じ症状でした。 http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/227
229: 名前は開発中のものです。 [sage] 2020/01/24(金) 23:27:42.92 ID:+Fsi074W むむ、これは、、本当にバグなのかもしれません。 今、限りなくソースをそぎ落としていってるんですが それでもその症状が出ます。 ほんと、プレイヤーのスクリプトでやってることは x = Input.GetAxisRaw("Horizontal"); if(x==0){ //止まる処理 } else if(x>0){ //右へ移動処理 } else if(x<0){ //左へ移動処理 } if(Input.GetKeyDown("space") ){ ジャンプ処理 } だけなんです。 リスタート後、xにすでに値が入らなくなるので 自分の移動処理やその他のスクリプトは関係無いはずです。 http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/229
230: 名前は開発中のものです。 [sage] 2020/01/24(金) 23:30:48.57 ID:+Fsi074W >>228 シーンの読み込み直しです。 void RestarScene(){ Scene thisScene = SceneManager.GetActiveScene(); SceneManager.LoadScene(thisScene.name); } http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/230
231: 名前は開発中のものです。 [sage] 2020/01/24(金) 23:37:49.39 ID:+Fsi074W これは、、、、今 大変なことが発覚しました。。。 http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/231
233: 名前は開発中のものです。 [sage] 2020/01/24(金) 23:40:43.33 ID:+Fsi074W このバグの発動条件が 左右キーを押しっぱなし中に「ジャンプした」あと死亡したらと思っていたんですが 違いました。 なんと、左右キーを押しっぱなし中に 「キーボードの他のボタン(どれでも)を押した」あと 死亡したらでした!!! なんと、ゲームで使ってないキーを押しても、この症状が出ます!!! これはどういうことでしょうか??????????? http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/233
235: 名前は開発中のものです。 [sage] 2020/01/24(金) 23:45:43.21 ID:+Fsi074W >>232 >これで最初の方向キーの入力が消えるってことなら いや、私の説明を誤解してます。 2. スペース の後も「1. 方向キー(←押しっ放し)」は生きてます。 そのままその方向に歩いていくし、放せば止まります。 ただ、1.を押しっぱなしのままで歩いて敵に当たったりして死亡したあと 再スタート後に利かなく(Input.GetAxisRawが左右を認識しない)なってるんです。 押しっぱなしのままなら、です。 説明が難しい。。。 http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/235
236: 名前は開発中のものです。 [sage] 2020/01/24(金) 23:55:45.35 ID:+Fsi074W >>234 検索して拝見しましたが 非常に勉強になるブログでした。 しかし自分のケースと少し違う気がしますがどうですか? なぜなら、自分のケースは 確かに二つ目のキー入力をしますが その後、その二つ目を放して、シーンを移動します。 つまりシーンをまたぐ時はキー入力は1つなんです。 そのブログのケースと違う気がするのですがどうですか? あと、もひとつ言いますと ゲットキーの設定関係なく、 二つ目のキーはパソコンのどのボタンでも 押したら発生します。。。 つまり、 Input.GetAxisRaw("Horizontal") で右方向キーを入力したまま パソコンの「w」だの「s」だのどこでも押したあと (それこそ"Horizontal"では受け付けてない上キーとかでも) 右方向キーを入力したまま死亡して シーンをやり直すと 右方向キーを入力が利いてない状態でスタートするんです。 http://mevius.5ch.net/test/read.cgi/gamedev/1578720539/236
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.177s*