▼そのUnityの作業、依頼しませんか?
メソッド

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

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

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

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サンプルゲーム】動画よりわかりやすく記事でゲームを作ろうでゲームを作ってみてください。

Unityサンプルゲーム
【Unity2D&3Dサンプルゲーム】動画よりわかりやすく記事でゲームを作ろう【チュートリアル】【Unity2D&3Dサンプルゲーム・チュートリアル】Unityにおいてのサンプルゲームの作り方が書いてある記事って少ないですよね。そこで当サイトUnishar(ユニシャー)が動画よりわかりやすいサンプルゲームを無料で提供します。...

以上さぎのみや(@saginomiya8)でした。SNSでシェアしてね( ・∇・) 明日からも一生無双でやったりましょう。

ABOUT ME
さぎのみや
さぎのみや
超書手。現在はUnityメディア「ユニシャー」の運営とゲーム開発がメインです。Unity、ライティング関係のお仕事お待ちしております。 >>詳しいプロフィール >>Amazonほしいものリスト
【Unity3D】新しいサンプルゲーム(チュートリアル)を作りました!!!
Unity有料サンプルゲーム

「Unityで3Dゲームを本格的に作っていきたい!」という人におすすめのチュートリアルとなっています。

画像のようなゲームの作り方を販売しています。色々と応用できるサンプルゲームとなっています。ぜひ、作ってみてください。

詳細
>>【Unity3Dサンプルゲーム】うちのポチが危ないところでフリスビーを要求する理由を教えてくれ

>>BOOTHでサンプルゲームを見る

【シェア・フォローであなたのスキルが上がる】

シェアフォローする

さぎのみやのモチベが上がる

コンテンツの質が上がる

あなたの能力も上がる

あなたの
Twitterでのシェア

pixivFANBOXのフォローであなたの能力が上がります。

>>さぎのみやのツイッター(@saginomiya8)
>>さぎのみやのpixivFANBOX

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


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