前回までで3DのUnityの使い方を一通り見てきたので,今回からは実際に3Dのシリンダーキャッチゲームの制作に入りたいと思います.
まず,3Dの新規ProjectをCylinderCatchGameなどとして作成します.次にHierarchyビューから[Create]→[3D Object]→[Plane]で床を作ります: 次にこのままでは床が狭いのでInspectorビューでPlaneのScaleをXとZを100にし,名前をFloorに変えます: これで床が完成しました.
次に回転するシリンダーをキャッチするパドルを作成します.Hierarchyビューで[Create]→[3D Object]→[Capsule]を選択します.カプセルができます: このCapusleの名前をPaddleに変更し,InspectorビューのTransformでRotationのZを-90,ScaleのX,Yをそれぞれ2にし,最後にpositionのYを1にします: これでPaddleができました: このままではSceneビューの向きがよろしくないのでHierarchyビューでMain Cameraを選択した状態でAltキーを押しながらSceneビューをドラッグして向きを変えます.さらにカメラを上の方に移動しておいてCamera Previewを見ながら丁度良いカメラの位置を探します: 正確に配置したい場合はInspectorビューで次のように入力してください: これでMain Cameraの位置と向きが決まりました.
続いてPaddleを操作するスクリプトを作ります.ProjectビューのAssetsフォルダ内を右クリックして[Create]→[C# Script]を選択しできたファイルの名前をPaddleControllerにします.それからPaddleControllerをダブルクリックで開いてスクリプトに以下の内容を書き込んでください:
using UnityEngine; public class PaddleController : MonoBehaviour { // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { if (Input.GetKey(KeyCode.LeftArrow) && transform.position.x > -10f) { transform.Translate(-10 * Time.deltaTime, 0f, 0f,Space.World); } if (Input.GetKey(KeyCode.RightArrow) && transform.position.x < 10f) { transform.Translate(10 * Time.deltaTime, 0f, 0f, Space.World); } if (Input.GetKey(KeyCode.UpArrow) && transform.position.y < 10f) { transform.Translate(0f,10 * Time.deltaTime, 0f, Space.World); } if (Input.GetKey(KeyCode.DownArrow) && transform.position.y > 1f) { transform.Translate(0f, -10 * Time.deltaTime, 0f, Space.World); } } }
このコードの意味はC#を勉強された方なら大体わかるとは思うのですが,ご説明すると例えばif文の最初のブロック
if (Input.GetKey(KeyCode.LeftArrow) && transform.position.x > -10f) { transform.Translate(-10 * Time.deltaTime, 0f, 0f,Space.World); }
は左の矢印キーが押されx座標が-10より大きいなら世界座標軸Space.Worldでx軸負の方向に10×Time.deltaTime分移動せよという意味です.なおTime.deltaTimeは処理速度の速いパソコンでは小さな値で,処理速度の遅いパソコンでは大きな値になるので,結果的にどんな動作環境でも同じ移動速度になるようするために掛けています.以下同様です.
さて,ctrl + sでこのスクリプトを保存したら,UnityでこのスクリプトをHierarchyビューのPaddleまでドラッグしてドロップしてください.PaddleにPaddleControllerがアタッチされます.これでPaddleが操作できるようになりました.Playをクリックして4つの矢印キーを押すときちんと動きます:
今回は以上です.次回は回転するシリンダーを一定間隔で生成します.