ユニティちゃんの2Dスクロールアクション:改 その3-1 とりあえず移動させる

ども、ゴコーです。

今回はユニティちゃんを移動させましょう。Unity では一言に「2Dの移動」と言っても様々な方法があります。

例えば、

  • Rigidbody2D.velocity を操作する
  • Rigidbody2D.AddForce() を使う
  • Rigidbody2D.MovePosition() を使う
  • Transform.position を操作する
  • Transform.translate() を使う

などです。

他にも色々ありますが、こんなに種類があるのは当然使い分ける必要があるからです。

今回はとりあえず移動させることを目的としていますので、使い分けが気になる方は待て次回!ということで(笑)


スポンサーリンク

Rigidbody2D.MovePosition()

さて、今回使用する移動の方法は MovePosition() という関数です。

これは「ある位置へ移動する」という関数です。そのまんまですね。

では実際に使用するコードを見てみましょう。

以上のコードを UnityChanController に上書きしたら実行してみましょう。

ユニティちゃんが左右のキー入力に従って横移動するようになりましたか?

成功しましたら、今回実装するコードはここまでです。簡単に内容を見ていきましょう。

今回行っていることは「入力を受け取る」「入力に従って移動する」の2つです。

入力を受け取る

Unityで「入力を扱う」と言えば Input クラスです。
今回は Input.GetAxisRaw(“Horizontal”) で左右の入力を受け取っています。

Input.GetAxis() との違いと今回 GetAxisRaw() を使っている理由などは次回に回します。

入力に従って移動する

移動の MovePosition() を使用するに当たって必要なのは 場所の指定 です。
しかし、唐突に適切な移動先を指定するなどということはまあ無理なので、普通は現在の位置を元に移動先を計算して指定するという使い方になります。

具体的には、 現在の位置 + 次回の移動量 = 移動後の位置 という計算が成り立つので、今回の MovePosition() の中ではそのように計算を行っています。

現在の位置 = rigidbody2D.position
次回の移動量 = Vector2.right * moveSpeed * Time.fixedDeltatime

今回使用している MovePosition() を使えば当たり判定に即した表示をしてくれます。
ぶつかる方、ぶつかられる方のどちらかに Rigidbody2D が無いとすり抜けることには注意です。


さて、内容は薄いですが、今回はこの辺にしておきましょう。

お気づきの方もおられるかもしれませんが、横移動できるようになった代わりに下方向への移動ができなくなってしまったと思います。

というわけで、次回は重力実装を行いましょう!

では、また。

Comments

comments

スポンサーリンク
336*280px

コメント

  1. ガンダム より:

    更新お疲れ様です。自分はつい先日からUnityを始めたばかりで
    スクリプトなども一切作ったことがなかったので非常に感謝してます(☍﹏⁰)
    なるべく自分でもスクリプトの管理ができるようになりたいのですが、まだまだ
    学ぶことがたくさんあるようで;ここに書いてあることで色々と学ぼうと思います。
    次回の更新も楽しみにしています^^。決して無理はなさらないでくださいね;

    • backlight1144 より:

      応援ありがとうございます!
      無理の無い程度に更新してたら更新速度がとても遅くなってしまった過去があるので、
      できる時にできるだけやるというスタンスでがんばりますー

      初心者の方は
      ・作りたいものを決める(モチベーションは大事です)
      ・ただし、理想を高く持ちすぎない(僕もそうでしたが、まず挫折しますwクソゲーでもいいんです)
      というようにしていけば良いと思います。

      昔よりも充実しているので、Unity公式チュートリアルもオススメですよ!
      http://japan.unity3d.com/developer/document/tutorial/