관리 메뉴

caLAB

[포톤네트워크]파티클 생성 및 삭제 본문

Unity/유니티 개발

[포톤네트워크]파티클 생성 및 삭제

도이(doi) 2022. 1. 10. 16:22
728x90

RPC를 통해서 파티클 play, stop을 제어해보려고 했으나. 해당 기능은 local에서만 동작한다고 한다...

그래서 아쉽게도 파티클을 생성 삭제하는 방식으로 로직을 바꾸었다. 

 

우선 gameMgr을 만들어서 기본적으로 네트워크에 연결하고 키 input 값이 들어왔을 때 파티클을 생성하도록 만드는 스크립트를 만들었다. Instantiate되고 있는 'particle'은 Hierarchy에 Resources폴더에 있다. 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Photon.Pun;
using Photon.Realtime;

public class particleMgr : MonoBehaviourPunCallbacks
{
    public PhotonView PV;
    private GameObject spawnedParticle;

    private void Awake()
    {
        Screen.SetResolution(960, 540, false);
        PhotonNetwork.ConnectUsingSettings();
    }

    public override void OnConnectedToMaster() =>
    PhotonNetwork.JoinOrCreateRoom("Room", new RoomOptions { MaxPlayers = 6 }, null);

    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            var pos = new Vector3(Random.Range(-10, 10), 0, Random.Range(-10, 10));
            spawnedParticle = PhotonNetwork.Instantiate("particle", pos, Quaternion.identity); 
        }
    }
}

파티클prefab에는 삭제 타이밍에 관련된 코드를 넣어준다. 

생성이 된 후에 start함수에서 파티클의 길이 후에 삭제 하도록 코드를 짰다. 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Photon.Pun;

public class particleInst : MonoBehaviourPunCallbacks
{
    private void Start()
    {
        Invoke("destroyParticle", 10f);
    }
    private void destroyParticle()
    {
        PhotonNetwork.Destroy(this.gameObject);
    }
}

파티클에는 따로 photon transform view를 넣어주지 말아야 한다. 관련 코드를 넣을 경우. 

움직임이 동기화 되지 않았다. 

728x90
반응형
Comments