簡単な3Dパズル風ゲーム作成の第2回目です。今回はブロックとスイッチを設定していきます。
はじめに
前回の続きの第2回目です。第1回目は下記から。
ゲーム作成開始
前回は「地面」と「壁」と「プレイヤー」を設定しました。今回は「ブロック」と「スイッチ」を設定していきます。
カメラ設定
まずは少しだけカメラの設定をします。位置とスケールをとりあえず仮として変更しておきます。
![](https://nosystemnolife.com/wp-content/uploads/2021/12/20211130001-1.jpg)
次に、スクリプトを作成します。プレイヤーが動いた分だけカメラも動くようにしておきます。
スクリプト名は「CameraMove」にして中身を下記に変更します。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CameraMove : MonoBehaviour { public GameObject player; private Vector3 _offset; void Start() { _offset = transform.position - player.transform.position; } void LateUpdate() { transform.position = player.transform.position + _offset; } }
作成したスクリプトをカメラオブジェクトにくっつけて変数にPlayerをセットします。
![](https://nosystemnolife.com/wp-content/uploads/2021/12/20211130003.jpg)
これでプレイヤーが動いた分だけカメラが動きます。
動かすブロックを作成
次にプレイヤーが動かすブロックを作成します。
ヒエラルキーメニューから「3Dオブジェクト」→「キューブ」を追加。
![](https://nosystemnolife.com/wp-content/uploads/2021/12/20211130004.jpg)
見分けがつきやすいように仮色を付けておきます。
「マテリアル」を作成してブロックにくっつけておきます。
![](https://nosystemnolife.com/wp-content/uploads/2021/12/20211130005.jpg)
![](https://nosystemnolife.com/wp-content/uploads/2021/12/20211130006.jpg)
ブロックに「コンポーネントを追加」からRigidbodyを追加。質量を小さくして、回転しないようにします。
![](https://nosystemnolife.com/wp-content/uploads/2021/12/20211130007.jpg)
これでプレイヤーがブロックを押せるようになります。
スイッチの作成
次にスイッチを作成します。ヒエラルキーメニューから「空のオブジェクトを作成」。名前をSwitchにしておきます。
![](https://nosystemnolife.com/wp-content/uploads/2021/12/20211130008.jpg)
配下に「3Dオブジェクト」→「キューブ」を追加。スイッチOFF状態です。
サイズを変更して、マテリアルも変更しておきます。
![](https://nosystemnolife.com/wp-content/uploads/2021/12/20211130009.jpg)
![](https://nosystemnolife.com/wp-content/uploads/2021/12/20211130010.jpg)
コピーして、スイッチON状態のオブジェクトを追加しておきます。
位置Yを下の方に変更しただけです。
![](https://nosystemnolife.com/wp-content/uploads/2021/12/20211130011.jpg)
次に、スクリプトを作成。スイッチにブロックが触れたら切り替わるようにします。
スクリプト名は「Switch」にして中身を下記にします。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Switch : MonoBehaviour { public GameObject onSwitch; public GameObject offSwitch; private void OnTriggerEnter(Collider other) { onSwitch.SetActive(true); offSwitch.SetActive(false); } private void OnTriggerExit(Collider other) { onSwitch.SetActive(false); offSwitch.SetActive(true); } }
Switchオブジェクトにスクリプトをくっつけて、変数をセット。
「コンポーネントを追加」からBOXコライダーを追加して、サイズを変更、トリガーにします。
![](https://nosystemnolife.com/wp-content/uploads/2021/12/20211130013.jpg)
試しに動かして、下記の様にプレイヤーでブロックを押して、スイッチの上に乗った時にオブジェクトが切り替わればOK
![](https://nosystemnolife.com/wp-content/uploads/2021/12/20211202002.jpg)