オンラインゲームを作成するのに,Photonでキャラの生成をしてカメラにCinemachineを使っています. CinemachineのFollowはInspectorから指定しておかないと追従してくれなかったのですが,scriptからしてできるようにしてみました
デモ
CinemachineをPhotonを使ってても使えるようになったけど,アニメーションが共有されない>>> pic.twitter.com/f6YzWVjf2q
— ようさん (@ayousanz) 2020年3月27日
追記:アニメーションの同期の修正版
やっとアニメーションの同期ができた!!https://t.co/TXJuRQbxHQ
— ようさん (@ayousanz) 2020年3月28日
てっきり関係ないのだと思っていた時期があったのです💦 pic.twitter.com/smRSDa2g7Z
実装内容
- PhotonでInstantiateをしてキャラを生成
- CinemachineからplayerをFindWithTagで探して,GameObjectを取得
- CinemachineのCinemachineVirtualCamera.Followにokayerを指定
コード
using System; using Cinemachine; using UnityEngine; public class CameraFollowPlayer : MonoBehaviour { private CinemachineVirtualCamera _virtualCamera; private GameObject player; void Start() { _virtualCamera = GetComponent<CinemachineVirtualCamera>(); } private void Update() { if (player == null) { player = GameObject.FindWithTag("Player"); if (player != null) { _virtualCamera.Follow = player.transform; } } } }
spriteのアニメーションの同期
キーボード入力によってspriteの切り替えのところにもIsMineの判定を入れましょう!!
参考サイト
https://forum.unity.com/threads/cinemachine-target-follow-an-initialize-prefab.559576/