#やりたいこと
MLAPIでマルチプレイを実装する際に、固定カメラじゃなくて、一人称視点でゲームがしたい!!でもあんまりデモ見かけない!!ということで、実際に作ってみました。
#MLAPIとは
MLAPIは、マルチオンラインゲームを簡単に実装できるものです。Unityで正式採用されたっぽい。
#はまったこと
他の人が入室した際に、その人のカメラに切り替わっちゃう...
#解決策
一人称視点のカメラをPrefabにつけないで、プレイヤーをInstantiateした後に別個にカメラをInstantiateして、子オブジェクトとしてくっつけました。
以下スクリプト
private void Start()
{
if (this.IsOwner) {
//後ろのカメラ(主カメラ)
playerCam = Instantiate(camera);
playerCam.transform.tag = "MainCamera";
playerCam.transform.parent = this.transform;
playerCam.transform.position = this.transform.position + new Vector3(0, 1.5f, -0.3f);
Debug.Log("made player Cam");
}
}
#解説
このスクリプトを、プレイヤーのPrefabにくっつけています。
まず最初に、
if(this.IsOwner){
を用いて、プレイヤーを生み出した人しかカメラを生成しないようにしています。
####(大事!!IsOwnerないともともとカメラを付けているのと変わらん)
次に、
playerCam.transform.tag = "MainCamera";
で、MainCameraとして設定して、きちんと画面そのカメラの映像が映るようにします。そして、
playerCam.transform.parent = this.transform;
playerCam.transform.position = this.transform.position + new Vector3(0, 1.5f, -0.3f);
と、カメラをプレイヤーの子オブジェクトにして、位置を設定してあげればOKです。
以上で終わりです。
何かもっといい方法、間違いがあれば教えていただけると幸いです。