- オブジェクトを横移動させる方法を知りたい
という悩みを解決します。
TransformのTranslateメソッドを使うことで、横移動させることができます。
スクリプトをアタッチするまでやスクリプトの実装例もお伝えするので、Unity使いはじめの方でも安心できる内容になっています。
スクリプト例だけ知りたい方はスクリプト例のところまで、すすめてください。ゆっくりご覧ください。
レイアウトは【2 by 3】です。見にくい方は【Unity】効率アップ!レイアウト(Layout)を変更してできる5個の開発画面で【2 by 3】に変更してください。
オブジェクトをx軸方向に横移動させる
オブジェクトの用意
自分はヒューマンピクトグラムさんの画像を使っていきます。自分のオブジェクトがある方はそれを使ってください。
Projectウィンドウに先ほどの画像データをいれる
【Projectウィンドウに先程のデータをドラッグ&ドロップ】
すでにオブジェクトのデータをプロジェクトウィンドウに入れている方はスルーしてください。
オブジェクトの設置
【Projectウィンドウでさきほどのオブジェクトを選択しSceneビューにドラッグ&ドロップ】
スクリプトの作成
【Projectウィンドウ】→【Create】→【C#Script】→【名前をPlayerController】(名前はなんでも良い)
スクリプトを開く
【Projectウィンドウ】→【PlayerControllerをダブルクリック】
スクリプト例
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を押すと右に移動します。
補足:オブジェクトを左右反転させよう
今のままだとオブジェクトが右に移動しているときでも、オブジェクトが左を向いています。そこで右移動しているときは右を向く、左移動しているときは左を向くように設定します。
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軸方向以外にも移動できる
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の値だけ移動、 |
transform.Translate(A, B, C);
の記事で使おう。右に移動したとき右を向く、左に移動したときに左を向くようにするスクリプトも入れよう。#unity #unity3d #ゲーム開発 pic.twitter.com/4FYfIUaDXS
— さぎのみや (@saginomiya8) October 8, 2018
Unityでゲームを作りはじめたばかりという人は【Unity2D&3Dサンプルゲーム】動画よりわかりやすく記事でゲームを作ろうでゲームを作ってみてください。
以上さぎのみや(@saginomiya8)でした。
コメント