top of page

Study] Photon Cloud(Unity)-13

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

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

  • 총알(레이저)

public class Bullet : MonoBehaviour
{
    public float speed;
    
    void Update
    {
        //이동
        Move();
        //이동 제한(오브젝트 제거)
        if(transform.position.y >= 10) Destroy(gameObject);
    }
    
    protected virtual void Move()
    {
        transform.Translate(vector2.up * speed * Time.deltaTime;
    }
}

Shoot(레이저 쏘기) 구현

  • 방법 1] 포톤 클라우드의 Instantiate를 이용하기

public class Shooter : MonoBehaviour
{
    ...
    ...
    ...

    //포톤 클라우드의 Instantiate를 이용하기    
    void ShootWithPhotonNetwork()
    {
        string prefabName = bullet.name;
        Vector3 pos = transform.position + new Vector3(0f, 0.2f, 0f);
        
        //Instantiate
        PhotonNetwork.Instantiate(prefabName, pos, Quaternion.identity);
    }
}

Shooter를 생성 하던 것과 똑같은 방법으로 생성한다.


  • 방법 2] RPC(Remote Procedure Call) 방법 이용하기

RPC는 같은 PhotonView Component를 가지고 있는 Player에게 함수를 실행하게 해준다.

쉽게 말하면 1번 클라이언트에서 함수가 실행되면 같은 2번 클라이언트에서도 같은 함수가 작동된다.


public class Shooter : MonoBehaviour
{
    ...
    ...
    ...
    //RPC 함수 만들기
    [PunRPC]    //RPC 함수의 앞에는 [PunRPC]를 붙여주어야한다.
    void ShootWithRPC()
    {
        //RPC 이용하기
        Vector3 pos = transform.position + new Vector3(0f, 0.2f, 0f);
        
        //Instantiate
        Instantiate(bullet, pos, Quaternion.identity);
    }
    //RPC 함수 사용
    void Shoot()
    {
        if(Input.GetButtonDown("Fire1"))
        {
            //RPC(Remote Procedure Call) 사용하기
            photonView.RPC("ShootWithRPC", RpcTarget.All);
        }
    }
}
  • Facebook
  • Twitter
  • LinkedIn

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

bottom of page