PUN2 로 네트워크를 구성중인데요
두명의 플레이어가 방에 있으면 먼저 방을 만든 마스터 클라이언트는
적을 떄리면 다른 플레이어에게 적이 날라가는게 보이는데
마스터 클라이언트가 아닌 두번째로 방에 들어온 플레이어가 적을 때리면
날라갈뻔하다가 다시 제자리로 돌아오면서 마스터 클라이언트 화면에는 아예
그 적의 움직임이 변하지 않습니다. 결론은 마스터 클라이언트 외에 플레이어들이
적의 포지션,로테이션 을 바꿀수가 없다는 것입니다.
이거로 2틀째 삽질중인데 미치겠네요;;; 도와주세요 ㅜㅜ
아래에 코드 첨부해요~
-------------------------------------------------------------------------------------
코드 수정을 해서 다시 올려드립니다
우선 플레이어에 달려있는 공격콜라이더오브젝트에 있는 스크립트입니다.
public bool Hit = false;
private PhotonView view;
private void Awake()
{
view = GetComponent<PhotonView>();
}
void OnTriggerStay(Collider other)
{
if (other.gameObject.tag == "EnemyCube" && Hit)
{
view.RPC("HitTarget", RpcTarget.MasterClient, other);
}
}
void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag == "EnemyCube" && Hit)
{
view.RPC("HitTarget", RpcTarget.MasterClient, other);
}
}
[PunRPC]
void HitTarget(Collider other)
{
GameObject CloneEnemy = other.gameObject;
Vector3 hitDir = Vector3.Normalize(
CloneEnemy.transform.position - transform.position);
CloneEnemy.GetComponent<EnemyCube>().fireDir = hitDir;
CloneEnemy.GetComponent<EnemyCube>().Fire = true;
}
그 다음은 적이 날라가는 코드입니다.
[HideInInspector]
public bool Fire = false;
private float fireSpeed = 20.0f;
private float rotSpeed = 5000.0f;
private Transform tr;
[HideInInspector]
public Vector3 fireDir;
private PhotonView view;
void Awake()
{
tr = GetComponent<Transform>();
view = GetComponent<PhotonView>();
}
void Update()
{
if(Fire)
{
view.RPC("FlyAway", RpcTarget.MasterClient);
}
}
[PunRPC]
void FlyAway()
{
tr.position += new Vector3(fireDir.x, fireDir.y + 0.1f, fireDir.z) * Time.deltaTime * fireSpeed;
tr.Rotate(fireDir * Time.deltaTime * rotSpeed, Space.World);
}