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
반응형