Unity

Unity 二段ジャンプさせてみた

更新日:

某魔界の村で戦う騎士のように、二段ジャンプを実装してみる。

 

x-z 面の移動は Input.GetAxis にて、実装。

 

最近、分かったことだが、Input.GetAxis と Input.GetAxisRaw なるモノがあり、前者は、PCなどのキーボード入力による場合でも、0から1、0から-1の値を徐々に、入力してくれるものらしい。

 

逆に、後者は、ジョイスティックなどの入力においても、極端に、0もしくは1、0もしくは-1の値をとるらしい。

 

ちなみに、raw の意味は、”生(なま)”、”生々しい” らしいのです。

 

 

| スクリプト(c#)


 

 

 

| Move()


PCの場合、方向キーで、オブジェクトを操作。

 

Input.GetAxis("Horizontal");

 

は、右と左のキー入力の値を、右なら、1 左なら、-1 で返してくれる。

 

Input.GetAxis("Vertical");

 

も同様に上下のキー入力を返してくれる。

 

ただ、このままでは、値が、1.0fか-1.0fなので、speed 変数などを任意で決め、乗算して移動量を決める。

 

(実行してみたら、そのままでも充分速かった。)

 

| Jump()


最初に、コードを書いたとき、Rigidbody() を使用するので、調子に乗って、FixedUpdate()

 内に、記述していったら、上手く動作しなかった。

 

おとなしく、Update 内に記述したら、思い通りの二段ジャンプをしてくれた。

 

 

| OnCollisionEnter(Collision collision)


あらかじめ、地面となるオブジェクトには、Ground のタグをつけておいた。

 

もし、接触したオブジェクトが、Ground のタグを持っていたら、内部の処理を実行している。

 

とは、言っても、やっていることは、JumpCount の変数に、0を代入しているだけ。

 

これで、二段ジャンプ後に、着地したら、また、二段ジャンプできるようになっている。

 

つまり、Ground のタグ付きのオブジェクトに接触しない限りは、二段ジャンプどころか、普通のジャンプもできなくなってしまうので、ゲームに実装する時は、あらゆるオブジェクトに接触したとき JumpCount に0が代入されるようにしないといけない。

 

まあ、単純にタグを外せばいいのだが。

-Unity
-,

Copyright© exarow , 2018 All Rights Reserved Powered by AFFINGER5.