Sample Assets 2D Character.unityのrobotにローリングアクションを組み込んでいた時に起きた問題。
スプライトシートからRoll.animを作成しAnimatorに配置、bool rollingでRunからつなぐ。
Platformer2DUserControl.cs の中の FixedUpdate に
bool rolling = Input.GetKeyDown(KeyCode.LeftShift) ; を追加、Moveの第4引数としてrollingを渡す。
あとは渡された方でanim.SetBoolだのanim.GetBoolだの加えりゃできる。
実際できた。robotは転がったのだ。
ただLeftShiftキーを押したときに転がったり転がらなかったりで非常に不安定。
ゲームをしていて一番イラつくのは『押したのに反応しなかった』ってことで間違いないので直すことにする。
Debug.Logを使って調べたらやはり反応しない時があるようなので
どういうことだと思って調べてみるとどうもこういうことらしい。
http://gamesonytablet.blogspot.jp/2012/12/unityinput.html
Updateの方ならInputを確実に拾ってくれるみたいだ。
追記
PC再起動してUpdateの方にInput.GetKeyDownを書き込んだら取りこぼしがなくなった。なぜ取りこぼしが発生していたのか。謎。直ったのでよしとする。
まとめ
FixedUpdate と Input.GetKeyDown は相性が悪い
最近Unityが不安定。
Runするとスクリプトのアタッチが外れたりAnimatorの矢印がなくなってたりする。あとMain Cameraのスクリプトが動作しなくなったり、これは頻繁に起こる。
ほとんどの症状はUnity再起動で直るあたりイラ壁。
とりあえずアセットをReImport All。初期状態に戻すことにする。
ありがとうございます。。。。unity始めてからまだ2ヶ月くらい。。同じ現象で困っていたので助かりました。
返信削除