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);
}
}
}