【Unity】オブジェクトを横移動(x軸方向)させるメソッドを使おう【Translate】

  • オブジェクトを横移動させる方法を知りたい

という悩みを解決します。

TransformのTranslateメソッドを使うことで、横移動させることができます。

スクリプトをアタッチするまでやスクリプトの実装例もお伝えするので、Unity使いはじめの方でも安心できる内容になっています。

スクリプト例だけ知りたい方はスクリプト例のところまで、すすめてください。ゆっくりご覧ください。

レイアウトは【2 by 3】です。見にくい方は【Unity】効率アップ!レイアウト(Layout)を変更してできる5個の開発画面で【2 by 3】に変更してください。

目次

オブジェクトをx軸方向に横移動させる

オブジェクトの用意

オブジェクトをダウンロード

自分はヒューマンピクトグラムさんの画像を使っていきます。自分のオブジェクトがある方はそれを使ってください。

Projectウィンドウに先ほどの画像データをいれる

Projectウィンドウに先ほどのデータをいれる

【Projectウィンドウに先程のデータをドラッグ&ドロップ】

すでにオブジェクトのデータをプロジェクトウィンドウに入れている方はスルーしてください。

オブジェクトの設置

オブジェクトの設置

【Projectウィンドウでさきほどのオブジェクトを選択しSceneビューにドラッグ&ドロップ】

スクリプトの作成

スクリプトの作成

【Projectウィンドウ】→【Create】→【C#Script】→【名前をPlayerController】(名前はなんでも良い)

スクリプトを開く

Unityでスクリプトを開く

【Projectウィンドウ】→【PlayerControllerをダブルクリック】

スクリプト例

PlayerController.cs

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

public class PlayerController : MonoBehaviour {

    // Use this for initialization
void Start () {

    }

    // Update is called once per frame
void Update () {

        // Aが押されたときに左に移動
        if (Input.GetKey(KeyCode.A))
        {
            transform.Translate(-2, 0, 0);
        }

        // Dが押されたときに右に移動
        if (Input.GetKey(KeyCode.D))
        {
            transform.Translate(2, 0, 0);
        }
}
}

if (Input.GetKey(KeyCode.A))
{
// 処理
}

Aキーを押したときに処理を行う
transform.Translate(2, 0, 0); X軸方向に2だけ移動する
transform.Translate(-2, 0, 0); X軸方向に-2だけ移動する

Aキーが押されたときに左に移動、Dキーを押したときに右に移動するように設定していまうす。

スクリプトをオブジェクトにアタッチ

スクリプトをオブジェクトにアタッチ

【PlayerControllerスクリプトを動かしたいオブジェクトにドラッグ&ドロップ】

こんな感じになる

オブジェクトを左右に移動

Aを押すと左に、Dを押すと右に移動します。

補足:オブジェクトを左右反転させよう

オブジェクトを左右反転させよう

今のままだとオブジェクトが右に移動しているときでも、オブジェクトが左を向いています。そこで右移動しているときは右を向く、左移動しているときは左を向くように設定します。

PlayerController

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

public class PlayerController : MonoBehaviour {

    int key = 0;

    // Use this for initialization
void Start () {

    }

    // Update is called once per frame
void Update () {

        // Aが押されたときに左に移動
        if (Input.GetKey(KeyCode.A))
        {
            key = 1;
            transform.Translate(-2, 0, 0);
        }

        // Dが押されたときに右に移動
        if (Input.GetKey(KeyCode.D))
        {
            key = -1;
            transform.Translate(2, 0, 0);
        }

        // 右に移動するときは右を向く
        if(key != 0)
        {
            transform.localScale = new Vector3(key, 1, 1);
        }
}
}

if (Input.GetKey(KeyCode.A))
{
// 処理
}

Aキーを押したときに処理を行う
transform.Translate(2, 0, 0); X軸方向に2だけ移動する
transform.Translate(-2, 0, 0); X軸方向に-2だけ移動する

TransformコンポーネントのScaleのXの値を-1にして、右方向に移動しているときは右を向くようにしています。

こんな感じになっています。コピペでもいいからやってみてください。

X軸方向以外にも移動できる

X軸方向以外にも移動できる

PlayerController

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

public class PlayerController : MonoBehaviour
{

    int key = 0;

    // Use this for initialization
void Start()
{

    }

    // Update is called once per frame
void Update()
{

        // Aが押されたときに左に移動
        if (Input.GetKey(KeyCode.A))
        {
            key = 1;
            transform.Translate(-0.1f, 0.1f, 0);
        }

        // Dが押されたときに右に移動
        if (Input.GetKey(KeyCode.D))
        {
            key = -1;
            transform.Translate(0.1f, 0.1f, 0);
        }

        // 右に移動するときは右を向く
        if (key != 0)
        {
            transform.localScale = new Vector3(key, 1, 1);
        }
}
}

transform.Translate(A, B, C); X軸にAの値だけ移動、Y軸にBの値だけ移動、Z軸にCの値だけ移動、

TransformのTranslateメソッドを使えばX軸でもY軸でもZ軸方向でも移動させることができます。

値を変えて試してみてください

まとめ

transform.Translate(A, B, C); X軸にAの値だけ移動、Y軸にBの値だけ移動、Z軸にCの値だけ移動、

Unityでゲームを作りはじめたばかりという人は【Unity2D&3Dサンプルゲーム】動画よりわかりやすく記事でゲームを作ろうでゲームを作ってみてください。

あわせて読みたい
【Unity2D&3Dサンプルゲーム】動画よりわかりやすく記事でゲームを作ろう【チュートリアル】 ▼この記事を先に見ておきましょう▼ https://miyagame.net/basis-cs/ 当サイトではUnityでのサンプルゲームを作成することができます。Unityでゲームを作っていきましょ...

以上さぎのみや(@saginomiya8)でした。

Unityでオブジェクトを左右に移動させる

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

よかったらシェアしてね!

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次