2/19/2017

[Unity]Charged Jumpを試す

3Dオブジェクトをタップしてジャンプさせる


スマホ上で、アニメーションがついたオブジェクトをタップした時間の長さに応じてジャンプする距離を変えるというものを試してみたくなったので。

頭の中のイメージに近いものをYoutubeで見つけたので全く同じことをやってみた。
動画はこれ。

Unity - Charged Jump

オブジェクトや地面に色をつけるのは適当にしておいて、アニメーションの動きは同じにしておいた。
とにかく途中で自己流にしてうまくいかないことが多々あるので、ひとまずスクリプトや動きに影響のある部分は変えないで最後まで作りきる。


空中に浮かんだ白い板を越えるほど飛ばしてみたい。


最初、tagを設定するところでスクリプトに「ground」と書いていたのにインスペクタには「Ground」と小文字にしてしまったりして困ったのだけど、YouTubeのコメントにも同じことをやってた人がいて無事解決。
コードの記述ミスや抜けも修正して無事にジャンプするところまでは完成した!
まっすぐ前に向かって飛ばせたかったので取り急ぎカメラの視点を変えてみた。

スクリプトの内容はなんとなくわかってきたのだけど、アニメーションの作り方も参考になった。
triggerで設定する方法は前に買った本「」にあったのだけど、
boolやfloatを初めて試すのでドキドキ。


アニメーション作成は左上の赤丸をクリックして録画状態にして、アニメーションさせたいオブジェクトを選択。


この時はPlayerの中に収めたCubeを選択。
録画状態にしたままKeyFrame0のところでTransformの数値を入れてみると枠内が赤くなる。これが設定した数値になる。

動きをつけたい時はタイムラインを任意の秒数のところに合わせて数値を変えてみるだけ。

スクリプトとの関連付けも行う。
Transitionsのところで設定したパラメータを選ぶ。
これはタップしている間に力を貯めるアニメーション。


画面から指を離すとジャンプ。
ここでboolの記述が実行される。


ジャンプしたらIdleに戻るため、onGroundをtrueに。



ここまでうまくできたので感動して終わろうと思ったが、
白い板にぶつかったらシーン遷移させてみようと思って早速上記の方法でアニメーションを作って飛ばしたいシーンに配置しておいた。

OnCollisionEnterとtagを使って、もし板にプレイヤーがぶつかってきたらシーン遷移という感じにした。白い板に下記を書いたスクリプトをアタッチ。
例えば、敵や謎の物体がぶつかるようなことがあるとして、あくまでPlayerがぶつかった時だけシーン遷移するためにタグを入れてみた。

void OnCollisionEnter (Collision other) {
  if (other.gameObject.CompareTag ("Player")) {
  SceneManager.LoadScene ("TitleScene");
 }
}





iPhone6 Plusでもうまく動いた。
くるくる回転しながら画面の中央に浮遊する感じ。

光が当たってないけどまあ、とりあえずアニメーションも動いたし今回はこれでよしとしようかな。

ただのCubeでも形を変えたり回転させたりしてアニメーションにしたら意外と面白いんだということもわかったよ(°ω°)
今日はここまで!


0 コメント:

コメントを投稿