YouTubeでプログラミングを教えていますYouTube

Unity スクリプトのアタッチとは?

  • URLをコピーしました!
目次

アタッチって何?

Unityでは、素材(キャラクター)にC#で書いたこコードであるスクリプトを取り付けることでキャラクターを動かすことができます。これをアタッチするといいます。

では、スクリプトのレンジャーレッドを矢印キーで動かせるようにしてみましょう。

メニューのAssets→Create→C#スクリプトを選択します。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerController : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        // 左右の矢印キーを押すとX 方向へ動く
        var x = Input.GetAxisRaw("Horizontal");

        // 上下の矢印キーを押すとY 方向へ動く
        var y = Input.GetAxisRaw("Vertical");

        // 移動する向きを求める
        var moveDirection = new Vector2(x, y).normalized;

        // 移動処理
        Move(moveDirection);
    }

    private void Move(Vector3 moveDirection)
    {
        // プレイヤーの座標を取得
        var pos = transform.position;
        
        // 移動速度
        var moveSpeed = 4;

        // 移動速度と方向から移動値を現在値に加える
        pos += moveDirection * moveSpeed * Time.deltaTime;

        // プレイヤーの位置が画面内に収まるように制限をかける
        pos.x = Mathf.Clamp(pos.x, -8.5f, 8.5f);
        pos.y = Mathf.Clamp(pos.y, -4.5f, 4.5f);

        // 自機の位置の更新
        transform.position = pos;
    }
}

InspectorのAdd Component→Scriptsからファイル名(この場合はPlayerContller)を選びます。ファイル名がない場合は、ファイル内のpublic class の名前がファイル名になっているか確認してください。

アタッチ画面

コードの解説

var
変数を宣言する命令。=記号を使って初期値を代入できる。
Input.GetAxisRaw()
カーソルキーかゲームコントローラーの移動キーの情報を取得する。 左右方向がほしいときは
Horizontal” 上下方向がほしいときは “Vertical” を指定する。


new Vector2 (x,y).normalized
2次元のベクトルを作成する。 normalized は正規化という処理を行い、ベクトルの長さを1にする。



移動処理
Move という名前のメソッドを定義している。メソッドとは、プログラムの一部に名前を付けて、
外部から呼び出しやすいようにしたもの。Move という名前を付けたことで、この範囲が移動処理だとわかりやすくしている。

transform.position
このゲームオブジェクトの位置を取得または設定する。

Mathf.Clamp()
第1引数に指定した変数の値を、 第2、第3引数の範囲に収まるよう調整する。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次