【Unity】iOSアプリ仕様の3Dジャンプアクションゲームを制作してみる【開発】(その4)
【スポンサーリンク】
Unityでios用3Dジャンプアクションゲームアプリ制作【第4回】
今回はボタンをタッチ(PC上ではクリック)すると、ボールが前後左右に移動するスクリプトとボタンの設定を行いたいと思います。
前回の最後にAssetsフォルダー内にC# Scriptの「PlayerMove」を生成しましたね。
その「PlayerMove」 スクリプトをダブルクリックしてMonoDevelopを開きます。
そしたら以下の移動する為のコードを書いていきます。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
using UnityEngine;
using System.Collections;
public class PlayerMove : MonoBehaviour {
bool forwardButton;
bool backButton;
bool rightButton;
bool leftButton;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if(forwardButton == true){
transform.position += new Vector3(0,0,2 * Time.deltaTime);
}
if(backButton == true){
transform.position += new Vector3(0,0,-2 * Time.deltaTime);
}
if(rightButton == true){
transform.position += new Vector3(2 * Time.deltaTime,0,0);
}
if(leftButton == true){
transform.position += new Vector3(-2 * Time.deltaTime,0,0);
}
}
public void forwardButtonDown(){
forwardButton = true;
}
public void forwardButtonUp(){
forwardButton = false;
}
public void backButtonDown(){
backButton = true;
}
public void backButtonUp(){
backButton = false;
}
public void rightButtonDown(){
rightButton = true;
}
public void rightButtonUp(){
rightButton = false;
}
public void leftButtonDown(){
leftButton = true;
}
public void leftButtonUp(){
leftButton = false;
}
}
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
書いたらビルド(commandキー+B)を押してUnity側に戻ります。
そして「PlayerMove」スクリプトを「Player」オブジェクトにドラッグ&ドロップしてスクリプトを付けて下さい。
このまま再生ボタンを押してゲームビューからボタンを押してもPlayerは移動しません。
まだ設定する必要があります。
次に、「F」オブジェクトをクリックしてメニューからComponent→Event→Event Triggerをクリックして「F」に付けます。
「F」の右側に表示される情報(インスペクター)の下を見ると、Event Triggerがあり、その下にAdd New Event Typeと言うボタンがあるのでクリックして下さい。
すると色んな項目があります。
今回はボタンを押した時(Downした時)にPlayerを移動させる事を行いたいので、上から3番目にある「PointerDown」をクリックします。
そして追加した右側に+のボタンがありますのでクリックします。
次に、Runtime Onlyと書かれた下の場所にNone (Object)とオブジェクトを入れる場所があります。
「Player」オブジェクトをクリックしたままの状態(通常の一度のクリックはしないで長押しのまま)で、このNone (Object)の場所にドラッグ&ドロップしてPlayerを入れて下さい。
入りましたね。
次はPlayerオブジェクトを入れた右にあるNo Functionをクリックして下さい。
一番下にPlayerMoveがあります。
これにカーソルを合わせて、forwardButtonDown()を選択して下さい。
このforwardButtonDown()の名前はスクリプトで見た事がありますね。
コードの中央辺りを確認してみましょう。
public void forwardButtonDown(){
forwardButton = true;
}
↑のこれは、このforwardButtonDown()の{から}までの文をボタンを押した時(Downしたら)実行して下さい、と言う意味です。
この文が実行されるとforwardButtonの変数はtrueになり、コードの中のUpdate()の中にある
if(forwardButton == true){
transform.position += new Vector3(0,0,2 * Time.deltaTime);
}
が実行されます。↑の細かい意味ですが...
もし forwardButton が trueになったら
if (forwardButton == true){
このスクリプトに適用されたPlayerの位置は 加える 新規で XYZ軸を使い
transform.position += new Vector3
Xに0、Yに0、Zに2ずつ移動させる(位置を変える)
(0 ,0 ,2 * Time.deltaTime );
}
と言う事です。
2の数値の後に書かれた * Time.deltaTimeは書くものだと思ってください。
簡単に説明するとこの * Time.deltaTimeの文は、iPhone、ipad、Android、PC上でゲームを遊んだ時に移動の速さが変わらないようにしている文だと思って下さい。(処理の速度を一定にさせる)
ちなみにVector2はXとYであり2Dゲームの際に使用します。今回は3DなのでXYZ軸のVector3を使用しています。
下のように設定したら再生ボタンを押して、Fのボタンをクリックしてみて下さい。
するとPlayerは奥に向かって前進していきますが、Fのボタンを離しても前進したまま下に落ちていきます。
今からこのFボタンを離した(Upした時)時に、先程と同じようなやり方の設定で移動を止めるようにさせます。
ゲームを停止して「F」オブジェクトをクリックして右側に表示された情報から再度Event Triggerをみて下さい。
そこから下にあるAdd New Event Typeをクリックします。
ボタンを離したら(Upしたら)移動を止めたいので、上から4番目にある「PointerUp」をクリックして下さい。
押した後に追加された方のRuntimeOnlyの右側のPlayerMove.forwardButtonDownと書かれたボタンをクリックします。
そしてPlayerMoveにマウスカーソルを合わせて「forwardButtonUp()」をクリックします。
これでボタンを離した時に移動が止まる設定が完了しました。
下のような設定になります。
ではこれと同じ文章のforwadButtonUp()をMonoDevelopからコードを確認して下さい。
public void forwardButtonUp(){
forwardButton = false;
}
上の細かい意味は、
forwardButtonUp()が行われたら
public void forwardButtonUp(){
forwardButton を falseにする
forwardButton = false;
}
forwardButtonはfalseにするとUpdate()内にある
if(forwardButton == true){
transform.position += new Vector3(0,0,2 * Time.deltaTime);
}
は実行されません。trueの場合は前に進みます。
これで再生を押して、Fボタンをクリックして少し前進させた後にボタンを離してみて下さい、移動が止まります。
これでFボタンのPlayerを前進させる設定は完了です!
次回は「F」オブジェクトと同じような設定で、「B」、「R」、「L」の各ボタンも設定していく説明をしたいと思います!