Unity-basic-movement-scripting

提供:Dev Guides
移動先:案内検索

Unity-基本的な動きのスクリプト

このレッスンでは、ユーザーの入力に基づいてgameObjectを上下左右に移動させるコードを記述します。 これにより、Unityスクリプトのワークフローをより簡単に理解できるようになります。

すべてのGameObjectには少なくとも1つのコンポーネント- Transform があることに注意してください。 特別なのは、gameObjectの変換もUnityのスクリプト側の変数として表示されるため、コードを使用して変更できることです。 これは、変換にも制限されません。 Unityのすべてのコンポーネントにはプロパティがあり、スクリプトの変数からアクセスできます。

移動スクリプトから始めましょう。 新しいスクリプトを作成し、「Movement」という名前を付けます。

ここで、スクリプトを開くと、前回のレッスンで見たものと同じものが表示されるはずです。

*speed* という名前のパブリックfloat変数を作成しましょう。 Unityで変数を *public* にすることには大きな利点があります-
  • 変数はエディター内で変更可能なフィールドとして表示されるため、コードの値を手動で調整する必要はありません。
public class Movement : MonoBehaviour {
   public float speed;
}

他のメソッドに触れずにこのスクリプトを保存すると、Unityでコンパイルされるはずです。

(コンパイル中は、右下のBufferアイコンで確認できます。)

次に、アセットからGameObjectにスクリプトを*ドラッグアンドドロップ*します。 あなたが正しくそれを行う場合、これはあなたがGameObjectのプロパティに表示されるはずです-

ドラッグアンドドロップ

速度値は調整可能であり、コード内で常に変更する必要がないため、start()の代わりにupdate()メソッドを使用できます。

ここで、Updateメソッドの目的を考えてみましょう-

  • ユーザー入力を確認してください。
  • ユーザー入力がある場合は、入力の指示を読んでください。 *速度と方向に基づいてオブジェクトの変換の位置値を変更します。 これを行うには、次のコードを追加します-
void Update() {
   float h = Input.GetAxisRaw(“Horizontal”);
   float v = Input.GetAxisRaw(“Vertical”);

   gameObject.transform.position = new Vector2 (transform.position.x + (h* speed),
      transform.position.y + (v * speed));

次に、breifのコードについて説明します。

まず、 h (水平用)という名前の浮動小数点変数を作成し、その値は Input.GetAxisRaw メソッドによって指定されます。 このメソッドは、プレーヤーが上/下/左/右矢印で押したキーに応じて、-1、0、または1を返します。

Inputクラスは、キー入力、マウス入力、コントローラー入力などの形式でユーザーから入力を取得します。 GetAxisRawメソッドは少し理解しにくいので、後で説明します。

次に、gameObjectの位置を、新しい Vector2 を作成して定義された新しい位置に*更新*します。 Vector2は、それぞれ xおよびy 値である2つのパラメーターを取ります。 x値には、オブジェクトの*現在*位置とその*速度*の合計を提供し、キーがその位置に押されるたびにフレームに効果的にいくらかの量を追加します。

このスクリプトを保存し、Unityに戻ります。 Unityは、正常にコンパイルされるとすべてのスクリプトを自動的に更新するので、スクリプトを何度も再添付する必要はありません。

以上で、GameObjectのプロパティの speed の値を0.8に変更します。 これは重要です。値が高いとプレイヤーの動きが速すぎます。

速度値

さあ、 Play をクリックして、あなたの最初の小さなゲームを実際に見てください!

再生

矢印キーを押して移動してみてください。 ゲームを停止するには、もう一度[再生]を押します。 速度をリアルタイムで調整することもできるため、常に停止したり開始したりする必要はありません。

次のレッスンでは、剛体と衝突について学習します。