MYMYゲーム制作室

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

Unity : 移動を完璧に理解したい!

チュートリアルを真似していろんなゲームを作れるようにはなったものの、自分流にアレンジしようと思うと、いつも頓挫する。まず基本の「移動」からして、なんとなくうろ覚え。

Transform.position += Time.deltaTime みないなのを使うのかと思うと、別の人はAddForceというのを使っていたり、Rigibody.velocityというのが出てくるのもあるし、Vector3( 1.0, 0, 0) みたいなのもある。それのまわりにTime.deltaTimeがくっついている場合もあるし、transform.forwardというのもあったな・・・

要するにUnityを操る言葉使いは、一つしかないわけではなく、いろんな言い回しができるということらしい。人によって、あるいは、その時の目的によって、複数の言い回しが出来、その中から目的にあったものを的確に選ぶのが正しいようではある。

しかし、初心者としては、どれでもいいから「これだけは使いこなせている!」と感じられるものが欲しい。この方式なら、アレンジもできるというものが欲しい。

今日はそれを分かりたくて、時々お世話になっているこのサイトを見て学んでみた。

https://dkrevel.com/makegame-beginner/make-2d-aciton-move/

れいさんは解説が丁寧で、初心者でもわかるように書いてくださっているので、ありがたい。

transform.position で動かす方式と、Rigibody.velocity で動かす方式があって、どちらでも動かせるが、その時の目的によってふさわしい方式を選ぶのがよいとのこと。

当たり判定を付けたい場合は、だいたいRigibody.velocityを使っておけば、間違いないようだ。このvelocityの意味がよく分からないまま、今まで真似して使っていたが、これが動くスピードということらしい。

   float xSpeed = 2.0f;
        float ySpeed = 0.0f;
        rb.velocity = new Vector2(xSpeed, ySpeed);

これをUpdate()関数の中に書くと、これでオブジェクトは動くらしい。

これをTransform.positionを使って書くと

  Transform.position += Time.deltaTime ; とか

  Transform.position = new Vector3(+2, 0, 0 ); とかになるのかな??(曖昧w)

 

Rigidbody.velocityを使う方式はだいぶ理解できて来たような気がする。

今日は、れいさんのサイトにあったスクリプトを真似して、オブジェクトがキー操作によって、右に動くというのをまず書いてみた。そのあと、少しずつアレンジを加えたバージョンのスクリプトをいくつか書いて、自分流にアレンジできるかどうかテストしてみた。

テストしてみたのはこれ↓

①れいさんのスクリプトそのまま、左右キーを押すと、左、右と動かせるもの。

②①に縦の動きも加えたもの。

③キー操作でなく、勝手に動くもの。

④③に更に手を加え、一定時間が経過すると今までと反対方向に動くもの。

⑤一定時間が経過するとランダムに上下左右(斜めも含む)に動くもの。

その記録は次の記事にまとめたい。

(こん)