TPSを、動的にダンジョンを作るローグライクゲームにしてみます。
ダンジョン生成は以前ネクロマンサーもどきの時にやってますのでコードを流用します。
カメラとプレイヤーの間に壁が割り込んだ場合に、カメラ位置を変更する処理を入れました。
とりあえずAIを引き連れて歩けます。
ただし、動的ダンジョン生成なので、navMeshは使えませんので、navMesh関係は削除しました。
よってAIと逸れると会うことができなくなります(´・ω・`)
追尾カメラはこんな感じ。
向きはプレイヤーと同じ。
位置はすこし後ろ。
プレイヤーからカメラへ向かって光線を飛ばして、障害物があったら、
カメラの位置をすこし詰めます。
Lerpで位置を変更しているので、やや遅れて追尾するカメラになっています。
public class TPScameraController : MonoBehaviour { public GameObject target; int layerMask; void Start () { layerMask = 1 << LayerMask.NameToLayer("Ignore Raycast"); layerMask = ~layerMask; } void Update() { if (target == null && Main.blue[0] != null) target = Main.blue[0].transform.FindChild("head").gameObject; if (target == null) return; transform.rotation = Quaternion.Lerp(transform.rotation, target.transform.rotation , Time.deltaTime * 5.0f); Vector3 offset = (target.transform.forward * 5.0f + target.transform.up * 0.5f); RaycastHit hit; if (Physics.Linecast(target.transform.position, transform.position, out hit, layerMask)) { transform.position = Vector3.Lerp(transform.position, target.transform.position - offset * 0.3f , Time.deltaTime * 5.0f); return; } transform.position = Vector3.Lerp(transform.position, target.transform.position - offset , Time.deltaTime * 5.0f); } }
追尾カメラはこちらを参考にさせてもらいました。