MYMYゲーム制作室

アラ古希姉妹のゲーム制作日記

Unity: 移動のつづき 今度はジャンプ!そしてDragonもできてきた。

赤いスクエアを

①左右に動かす。

②上下左右に動かす。

③キー操作なしで自動で動かす。

④一定の時間で反転するように動かす。

⑤ランダムに動かす。

は、できるようになったので、今度は

⑥ジャンプさせる。をやってみよう。

 

基本的にはrb.Velocity=new Vector2(xのスピード、yのスピード );

のスタイルでやってみたい。

②のスクリプトに手を加えればできそう。

 

チュートリアルをなるべく見ないでトライしてみることに。

 

上下の動きはこないだできたわけだから、縦のスピードを大きくすれば、ジャンプらしく見えるでは?

やってみると上には移動するものの、落ちてこない。

そりゃそうだ!Rigidbodyの重力をゼロにしてあったからね。

重力を1にしてやってみる。

そうすると当然、ほっといても赤いスクエアは下に落ちてくる。

が、放っておくとどこまでも落ちていく。

ジャンプをやるときは、地面がないとダメだな。

2Dオブジェクトのスクエアをもう一つシーンに追加してGroundとする。

これにBoxColliderを付けた。

これで赤いスクエアは画面からいなくならないね。と思ったがまだ落ちていく。

衝突判定は、二つのオブジェクトの両方にColliderがあることと、すくなくともどちらかにRigidbodyがあることが条件だった!!

地面にはRigidbodyはなくてもよいわけだし、赤いスクエアには既にRigidbodyはついているわけなので、赤いスクエアの方にBoxColliderを付ける。

これで地面で止まるようになった。

 

ジャンプらしくピョンと飛び上がる感じをだすには、横移動とは違い、かなりのスピードが必要なのに違いない。横移動のxスピードは2だったので、yスピードを10にしてみるが、なんだかのんびりとした動き。更に50,100,1000と増やしてみたけど、あまり変化はない。これではダメなようだ。スピードを速くするだけでは、ジャンプの動きにはならないようだ。

ここで、やはりチュートリアルを参考にすることに。

今日もれいさんのサイト参照

Unity 2Dアクションの作り方【ジャンプ】【高さを押した長さで変更可】 | ゲームの作り方! (dkrevel.com)

れいさんはインスペクターの重力を使わずに、スクリプトから重力を操作していた。

自分で決めた重力(Gravity)を飛び上がるスピードとしても使っている。

あと、地面との衝突判定のために地面にもGroundCheck.csというスクリプトを作って貼り付けているが、これが結構複雑、、、、OnTriggerEnterとOnTriggerStayとOnTriggerExitを全部チェックして場合をわけているが、そこまでやらないとダメなのか、、、、?

地面のTagをGroundにして、OnTriggerEnterなら飛ぶかとやってみたが、飛ばない( ;∀;)

ん?なんでだ?     なるほど~~!

一瞬飛びあがっても、地面とくっついていない状態になると、着地しているというフラグがfalseになってしまうため、飛び上がれなくなってしまうということか。ちゃんとれいさんが解説してくださっている。手抜きしようとすると、逆にわけのわからないことになって、遠回りすることになってしまう、ありがちな罠だ。

続きはまた明日、ちゃんとれいさんの教えの通りにやることにしよう。

 

今日はぽんさんがボス戦用のドラゴンをあらたに描いて、アニメーションを作ってくれていた。ぽんさんもBlackthornprodさんの動画が気に入っていて参考にしているようで、いろいろ学ぶとことがあると言っていた。

動画👇

 

ボスのわりには素朴でかわいいドラゴンだが、キツネくんとのバランスが程よい感じ。この強そうでない愛嬌のあるボスドラゴンで進めることに。周りにいるにぎやかしの雑魚は、Blackthornprodさんのチュートリアルからの借り物なのだとか。

キツネくんとドラゴンがぽんさんのオリジナル。まだキツネくんはおいてあるだけだから、石の地蔵のようにただ突っ立っているだけ。ドラゴンがいくら脅しにかかっても平然としているから、逆にドラゴンの方がびっくりしているw

(こん)