【Unity】iOSアプリ仕様の3Dジャンプアクションゲームを制作してみる。【開発】(その7)
【スポンサーリンク】
Unityでios用3Dジャンプアクションゲームアプリ制作【第7回】
次はiPhoneかiPadを使って、実機で動作確認をしてみましょう!
ではPCにUSBケーブルを挿してiPhoneかiPadに繋げて下さい。
App Storeから検索を押してunity remoteと検索して下さい。
するとUnity Technologies ApS社のunity remote 5が一番上にあるはずです。(2016年12月16日現在)
それをインストールして、unity remote 5を開きます。
そしてUnity側のメニューからEdit→Project Settings→Editorを開きます。
すると右側に表示される情報(インスペクター)にDeviceと言う項目があるので、横のNoneをクリックし、一番下の
Unknown:iPhone 何たらかんたら〜ry..
をクリックします。
下のようになります。
できたら再生ボタンを押して下さい。(画面に写るまで数秒かかります。)
画質は悪いですが、iPhoneかiPad画面にどういった感じに写るか確認出来ます。
ちなみに画面上でボタンをタッチして移動させる事も出来ます。
いつでも再生ボタンを押すだけでテスト出来るので便利ですね。(Unity最高!)
画質が悪いのはUnity Remote使用している時のみで、実際にアプリとして起動する時は画質は悪くなっていないのでご安心を。
では次は左右に移動する地面を作成したいと思います!
ヒエラルキーにある「jimen2」をクリックして右クリックし、Deplicateを選択して複製させます。
そして複製した名前を「jimen_move」に変更します。
jimen_moveの位置と大きさを変更します。
PositionXを0、PositionYを0、PositionZを34にします。
ScaleXを10、ScaleYを1、ScaleZを10に変更して下さい。
ではこれから左右に往復移動するスクリプトを作成します。
ProjectからCreateボタンを押してC# Scriptを作成し、名前を「jimenMove」にしてダブルクリックしMonoDevelopを開きます。
そして以下のコードを書きます。(スペルが間違いやすいかもしれないので、エラーが起こったらよく確認して下さい)
ーーーーーーーーーーーーーーーーーーーーーーーーーーーー
using UnityEngine;
using System.Collections;
public class jimenMove : MonoBehaviour {
float InitPos;
float EndPos;
bool leftmoveTrue = false;
// Use this for initialization
void Start () {
InitPos = transform.position.x;
EndPos = transform.position.x + 15;
}
// Update is called once per frame
void Update () {
if(leftmoveTrue == false){
transform.position += new Vector3(2 * Time.deltaTime,0,0);
if(transform.position.x >= EndPos){
leftmoveTrue = true;
}
}
if(leftmoveTrue == true){
transform.position += new Vector3(-2 * Time.deltaTime,0,0);
if(transform.position.x <= InitPos){
leftmoveTrue = false;
}
}
}
}
ーーーーーーーーーーーーーーーーーーーーーーーーーーーー
書いたらビルドして、再生ボタンを押して確認して下さい。
最初に地面は右に移動し、ある一定の位置まで行くと次は左に移動して、また一定の場所まで行くと右に行く..と言う往復して移動するようになりました。
では何故このような事が起こったのか、コードを確認して説明します。
最初にある各変数の意味は、
InitPosが最初の地面のXの位置を格納する為の変数です。
EndPosが最終位置で、ここに来ると左に移動を戻す為の変数です。
leftmoveTrueは左に移動を始めさせる時に使う変数です。
そしてStart()内にある、
InitPos = transform.position.x;
はInitPosと言う変数に、再生ボタンを押した後、すぐに地面のPositionXの値を入れています。
そして
EndPos = transform.position.x + 15;
はEndPosの変数に、現在の位置(再生ボタンを押したすぐのXの位置)の+15を足したXの位置の数値を入れています。
Update()内のコードをみて下さい。
if(leftmoveTrue == false){
transform.position += new Vector3(2 * Time.deltaTime,0,0);
if(transform.position.x >= EndPos){
leftmoveTrue = true;
}
}
↑は右に移動させる為の文になります。
各コードを説明すると、
もし 左移動 で ないなら
if (leftmoveTrue == false){
現在の位置に 移動(加える) 新規で XYZ軸を使い X軸に2、Y軸に0、Z軸に0
transform.position += new Vector3 (2 * Time.deltaTime,0,0);
もし 現在の位置X が 最終位置より上の数値になったら
if (transform.position.x >= EndPos){
左移動になる
leftmoveTrue = true;
}
}
と言う感じですかね。
次の
if(leftmoveTrue == true){
transform.position += new Vector3(-2 * Time.deltaTime,0,0);
if(transform.position.x <= InitPos){
leftmoveTrue = false;
}
}
↑の説明をすると
もし 左移動 が trueなら
if (leftmoveTrue == true){
現在位置に 移動(加える) 新規で XYZ軸を使い X軸に−2、Y軸に0、Z軸に0
transform.position += new Vector3 (-2 * Time.deltaTime,0,0);
もし 現在位置Xが 初期の位置より小さくなったら
if (transform.position.x <= InitPos){
左移動 に させない
leftmoveTrue = false;
}
}
となります。
次回はPlayerを邪魔するボールの障害物の出現方法を書いていきます。