top of page

Study] Photon Cloud(Unity)-12

  • 작성자 사진: 김영호
    김영호
  • 2023년 1월 31일
  • 1분 분량

최종 수정일: 2023년 4월 25일

Photon Cloud 지원 기능

  • Functions

- PhotonNetwork.Instnatiate(stirng prefabName, Vectro3 position, Quaternion rotation);

Photon Cloud의 Instantiate 기능, 다른 클라이언트상에도 똑같이 생성해준다.

기존의 GameObject를 받아 생성하는 것이 아닌 Prefab의 이름을 입력 받아 생성하는 것이 특징 (반드시 Resources 폴더 안에 있어야한다.)

  • Components

- Photon View

다른 클라이언트에도 보여주기

Ownership : Photon Cloud 지원의 Player반환

IsMine : 해당 클라이언트에게 소유권이 있는가

- Photon Transform View

Transform 변경 시 다른 클라이언트에 적용하기


  • GameManager.cs

using Photon.Pun;
using Photon.Realtime;

public class GameManager : MonoBehaviourPunCallbacks, IPunObservable
{
    //내가 선택한 슈터 이름
    string shooter = PhotonNetwork.LocalPlayer.CustomProperties["Shooter"].ToString();
    
    //Transform data
    Vector3 pos = transform.position;
    Quaternion rot = transform.rotation;
    
    //Prefab name
    string prefabName = "Prefabs\\";
    if(shooter == "Raptor")
    {
        prefabName += raptor.name;
        pos += Vector3.left;        //Left side
    }
    else if(shooter == "Phantom")
    {
        prefabName += phantom.name;
        pos += Vector3.right;        //Right side
    }
    
    GameObject shooterObj = PhotonNetwork.Instantiate(prefabName, pos, rot);
}

선택된 Shooter에 따른 값에 따라 Prefab과 위치를 정해서 PhotonNetwork.Instantiate() 함수를 사용해 동적 생성해준다.



  • Shooter

ree

ComponentPhoton ViewPhoton Transform View추가해 주면 Photon Cloud로 연결되어 있는 다른 클라이언트에서 동기화 해줄 수 있다.

public class Shooter : MonoBehaviour
{
    [Header("Stat")]
    public float speed = 2.0f;

    protected PhotonView photonView;

    protected virtual void Start()
    {
        photonView = GetComponent<PhotonView>();
    }
    
    void Update()
    {
        //내 슈터일때만 키입력을 받아서 이동
        if (photonView.Owner.IsLocal)    //혹은 if (PhotonView.IsMine)
            Move();
    }
    
    public void Move()
    {
        //Input
        float h = Input.GetAxis("Horizontal");
        float v = Input.GetAxis("Vertical");

        //Calculation
        Vector3 mov = new Vector3(h, v, 0) * speed * Time.deltaTime;

        //Transform
        transform.Translate(mov);
    }
}

  • Facebook
  • Twitter
  • LinkedIn

©2021 by 김영호_포트폴리오. Proudly created with Wix.com

bottom of page