ランスタのブログ

気になった事の実験や検証、Cinema4Dでのモデリングや使い方、Unityのゲームアプリ制作に関する記事を書いています。

【スポンサーリンク】

【Unity】iOSアプリ仕様の3Dジャンプアクションゲームを制作してみる。【開発】(その6)

【スポンサーリンク】

Unityでios用3Dジャンプアクションゲームアプリ制作【第6回】

前回は「F」、「B」、「R」、「L」ボタンを使用してPlayerを移動させる設定を行いました。
 
次はPC用にキーボードで操作出来るようにしたいと思います。
 
では生成していたC# Scriptの「PlayerMove」をクリックしてMonoDevelopを開きます。
 
そしてここからキーボードでPlayerを移動させる為のコードを付け足していきます。
 
今回はWキーで前進、Sキーで後退、Dキーで右移動、Aキーで左移動させたいと思います。
 
では以下からコードが付け加えられたコードを確認しながら修正して下さい。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーー
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 ||
Input.GetKey(KeyCode.W)){
transform.position += new Vector3(0,0,2 * Time.deltaTime);
}
if(backButton == true ||
Input.GetKey(KeyCode.S)){
transform.position += new Vector3(0,0,-2 * Time.deltaTime);
}
if(rightButton == true ||
Input.GetKey(KeyCode.D)){
transform.position += new Vector3(2 * Time.deltaTime,0,0);
}
if(leftButton == true ||
Input.GetKey(KeyCode.A)){
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)して再生ボタンを押して下さい。
そして、Wキーで前進、Sキーで後退、Dキーで右移動、Aキーで左移動するか確認して下さい。
 
確認出来たらコードを見てなぜキーを押すと動くようになったのか確認してみます。
 
まずWキーを押すと前進したのは、Update()内にある
Input.GetKey(KeyCode.W)
 
を付け足したからです。
 
簡単なコードの意味は、
 
入力された. キーを取得 キーは.W
Input. GetKey (KeyCode.W)
 
つまりWキーの入力を取得したらif文の条件を実行させると言う事です。
 
残りの「S」、「D」、「A」も同様に、Update()内にある、
 
入力された. キーを取得  キーは.S
Input.     GetKey    (KeyCode.S)
 
入力された. キーを取得  キーは.D
Input. GetKey (KeyCode.D)
 
入力された. キーを取得  キーは.A
Input. GetKey (KeyCode.A)
 
という事です。
 
そうそう重要な問題を忘れていました。
これでPlayerは移動はしますが、カメラはPlayerを追従していない(Main Cameraが動いていない)為、Fボタンを押してPlayerが奥に行くと見えづらくなります。
 
もしくはBボタンを押して後退して行くと、いずれ画面外に行き見えなくなります。
これを解消してPlayerの移動に合わせてMain Cameraオブジェクトが一緒に動くようにさせたいと思います。
 
この問題は簡単で、「Main Camera」オブジェクトをクリックしたまま、Playerオブジェクトにドラッグ&ドロップしてPlayerオブジェクトの下の階層に入れて下さい。
下のようになります。

f:id:Lanstar:20170528231400p:plain

 
これで再生して適当なキーを押し、移動させてみて確認してみて下さい。
 
Playerの移動する場所に合わせてMain Cameraオブジェクトが追従してくれてます。
 
では次に左右に往復移動する地面を作成したいのですが、ゲームをプレイした時にいきなり左右移動する地面をPlayerの前に作成するのはプレイするユーザーが難易度的にちょっと高いので、1度少し離した場所に止まった地面を再度置いて置こうと思います。
 
ではヒエラルキーにある「jimen」を右クリックしてDeplicateを選択して複製します。
複製したjimenの名前を「jimen2」に変更して下さい。
 
そして「jimen2」の位置と大きさを変更します。
jimen2をクリックして右の情報のTransformから
PositionXを0、PositionYを0、PositionZを22に変更し、
ScaleXを10、ScaleYを1、ScaleZを10に変更します。
 
すると前に新たな地面が出来ました!
 
後、Main Cameraの位置のY軸と角度がまだ少し低いので、再度調整します。
 
Main Cameraをクリックし、
PositionXを0、PositionYを11、PositionZを-12にして、
RotationXを38、RotationYを0、RotationZを0に変更します。
 
するとゲームビューは以下のような感じになります。

f:id:Lanstar:20170528231402p:plain

 
次回はiPhoneまたはiPadを使用して、実際に実機の確認、どういった画面上で写っているのかと、左右移動する地面を作成して、移動させる為のスクリプトを書いていきたいと思います!
 

【スポンサーリンク】