[過去ログ] 【ゲームエンジン】Unity初心者質問スレBuild3 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
213(1): 名前は開発中のものです。 [sage] 2020/01/23(木) 20:40:25.80 ID:o31+m3nu(2/2) AAS
>>212212(1): 名前は開発中のものです。 [sage] 2020/01/23(木) 20:32:46.84 ID:o/nrz+aB(1/2) AAS
AnimationControler みたくステートマシーンをグラフィカルに編集できるアセットってないっすかね?
AnimationControler と StateMachineBehaviour がありゃステートマシンでやるようなこと何でもできるじゃないのって思ってたけど、
Time.timeScale=0 したら setTrigger しても状態遷移しないし、
やっぱりステートマシンのすべてを AnimationControler に任せるのは無理があるのかなとか思って。
なければ State パターン でハードコーディングすべきなのかなやっぱり。
animator.updateMode = AnimatorUpdateMode.UnscaledTime;
214: 名前は開発中のものです。 [sage] 2020/01/23(木) 21:43:00.61 ID:o/nrz+aB(2/2) AAS
>>213 うお、そんなオプションが…。解決しました。感謝です。
215(1): 名前は開発中のものです。 [sage] 2020/01/24(金) 04:03:03.22 ID:+Fsi074W(1/11) AAS
すみません、変な質問なんですが 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: 名前は開発中のものです。 [] 2020/01/24(金) 07:02:28.39 ID:9g9ZzaxQ(1/3) AAS
バグっぽいと言うのはどこの情報ですか?
217(1): 名前は開発中のものです。 [sage] 2020/01/24(金) 07:54:41.99 ID:1mzH9O5r(1) AAS
>>215
普通に考えてリスタートの処理の仕方に問題があるかと。
ゲームオーバーで最初に戻るにしても、インプット関数としては、ゲームオーバーしようがしまいが関係ない。なら、リスタートまでに何か影響のある処理を入れてしまっている事が考えられる。
例えば、start()に取得し直しとか書いてるけど、startをまた呼び出してるの?すまん、私はそんな表記はした事ないから異常に見えました。
218(1): 名前は開発中のものです。 [sage] 2020/01/24(金) 12:14:44.83 ID:JiuRt8jn(1) AAS
プレイヤーオブジェクトをDestroyしてる説
219: 名前は開発中のものです。 [sage] 2020/01/24(金) 16:44:42.21 ID:YxoFqWNA(1/2) AAS
おこなの?
220: 名前は開発中のものです。 [sage] 2020/01/24(金) 21:18:19.49 ID:lHO70wOG(1) AAS
質問です
編集ソフト間ではテクスチャやマテリアルをFBXに同梱するのは珍しくありませんが、Unity上ではあまり見かけません
単にUnityではFBX内のデータを編集できないから邪魔という理由かなと思っていますが、他にも理由があるのでしょうか?
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")は仕事をしてくれなくなる
状況です。
(で、一度入力を放すと正常になる)
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
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)
上下前次1-新書関写板覧索設栞歴
あと 765 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.027s