前回は、Unityのインストールからゲーム上にオブジェクトを設置していきました。今回はゲームの仕組みとなるスクリプトを主に作っていきます。障害物を作ろう前回、壁や床を設置したように、またCubeを追加します。障害物となる素材がないのでCubeで粘ります。設置したらScaleを調整し横に長くして、右クリックで名前を変更します。wall01など任意で変更してください。次に今回の主役、scriptを追加します。追加したら、名前をForwardとして編集します。}}ソースコードは上記になります。C#の規約でclass名とファイル名が一致するようにしてください。Startという関数はゲームの最初に1度だけ呼ばれる関数で初期化を行う場所です。Updateは毎フレーム、つまり1秒間に何度も連続で呼ばれる関数です。0.2f;とすることでキャラクター手前に障害物が移動します。transformは位置や回転や大きさを操作するオブジェクトです。その中のtransform.positionにVector3オブジェクトを代入することで移動させています。保存したらUnityに戻り、ドラッグアンドドロップでwall01に重ねます。することでオブジェクトとスクリプトが関連付けされ、スクリプトの中のtransform.positionはCubeから作って設置した障害物と座標になります。次に、全体をコントロールするオブジェクトを作ります。Emptyで空のオブジェクトを作り、そこにスクリプトを適応させてゲーム全体のコントロールを行います。GameObjectをWallControllerに名前を変更してスクリプトを追加します。スクリプトの名前もWallControllerでOKです。}}一定時間おきに、prefabA、prefabB、prefabCのどれかを生成し、ランダムで物体に色を付けています。このコードを保存して先ほど作った空のGameObjectに貼り付けます。今度は逆に、HierarchyからProjectへドラッグアンドドロップします。するとProject内にPrefabと呼ばれるデータができます。Prefabにする事でスクリプトが張り付いた状態でオブジェクトを保持する事ができ、Hierarchyにドラッグアンドドロップすればいくつでも同じものを複製できます。障害物のレパートリーを増やすためにCubeを追加して、奥に縦長な物体を設置しましょう。それをwall02と名前を付けたらProjectからForwardスクリプトをドラッグアンドドロップで、wall02を選択した状態のまま右側に引っ張りスクリプトを適応させます。これもまたPrefabにするのでHierarchyからProjectへドラッグアンドドロップします。Hierarchy内のwall01やwall02は複製して使うのでPrefabを作ったら削除しましょう。同じ要領でwall03をつくりPrefabを3つ作りましょう。prefabC;これで先ほどの空のGameObject(WallController)に対応するPrefabがそろいました。HierarchyのWallControllerを選択して、Projectから右側にのPrefabA~Cにドラッグアンドドロップします。変数をpublicにする事でこのようにソースコードを修正しなくてもスクリプトにデータを送ることができます。これで、手前に流れてくる3つのPrefabを一定周期でランダムに出す実装が完成しました。このままではオブジェクトが消えずに残り、Prefab達はステージから外れた無限世界に旅立ってしまうので、触れたらあたり判定が動作してPrefabを削除してくれるようなストッパーを作ります。Cubeを出して横に長くし、ComponentからRigidbodyを追加します。Rigidbodyを追加する事でUnityが自動的にあたり判定をとってくれます。Cubeから作ったストッパーを選択して、Rigidbodyをこのような設定にします。スクリプトをストッパーに追加します。}}OnCollisionEnterは衝突した瞬間に1度呼ばれる関数で、引数collisionは衝突したGameObjectを持っています。区別するためにUnity-chanを選択してタグをPlayerに直します。“Player”で判別できるようになりました。3つのPrefabにもRigidbodyを追加していきます。Kinematicをチェックして物理演算をOFFにします。完成ゲームを再生してみると、障害物がプレイヤーキャラクターを押し出すように動き、プレイヤーキャラはキー操作で動き回り、ストッパーは障害物と当たると障害物を消してくれるようになりました。ゲームとしては今一つな感じはありますが、とりあえずUnityの大体の基礎はこんな感じになります。付け足すとしたら、ゲーム開始の秒読みや、どのくらいステージに滞在できたかをタイマーで測る機能くらいでしょうか。ここまで読んでくれた方、どうもありがとうございました。QlikSense(QlikViewの派生版)の使い方Go-Nextにいいね!しーな。システムちーむ南の島で暮らすのが夢。走って穴を掘るのが僕の仕事。スマホサイト制作にかかせないbackground-sizeについて5簡単作成!オリジナルのイラストなどのデザインQRコードを作ってみた。他にもこんな記事が読まれています!WEBマーケティングサーバー・ネットワークライフスタイルお知らせ2014.12.12Gruntの使い方。作業効率を上げる便利な自動タスクツール。4選2016.06.08デスクワーカーもスタイル保ちたい、健康になりたい奮闘記。