1인 개발/Push And Slash

푸쉬앤슬래시 개인 프로젝트 25일차

잼잼재미 2024. 6. 14. 21:38

구현 내용

 


1. 멀티 전투 구현


 

 

PhotonAnimatorView 동기화를 통해 전투 애니메이션 적용

 

https://kkln2486.tistory.com/435

 

캐릭터 동기화 (PhotonTransformView, OnPhotonSerializeView , PhotonAnimatorView)

캐릭터 동기화PhotonTransformView 동기화OnPhotonSerializeView 동기화PhotonAnimatorView동기화  구현 방법PhotonTransformView 동기화  1. 컴포넌트 추가 및 설정 Player 프리팹에 PhotonView 컴포넌트와 PhotonTransformVi

kkln2486.tistory.com

 

 

public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)
{
    // 데이터 보내기 (isMine == true)
    if (stream.IsWriting)
    {
        stream.SendNext(transform.position);
        stream.SendNext(transform.rotation);
        stream.SendNext(new Vector3(transform.forward.x, 0, transform.forward.z));
        stream.SendNext(GameManager.I.DataManager.PlayerData.Atk);
        stream.SendNext(GameManager.I.DataManager.PlayerData.SkillAtk);
        stream.SendNext(GameManager.I.DataManager.PlayerData.Def);
    }
    // 데이터 받기 (isMine == false)
    else
    {
        _playerPosition = (Vector3)stream.ReceiveNext();
        _playerRotation = (Quaternion)stream.ReceiveNext();
        PlayerDirection = (Vector3)stream.ReceiveNext();
        Atk = (float)stream.ReceiveNext();
        SkillAtk = (float)stream.ReceiveNext();
        Def = (float)stream.ReceiveNext();
    }
}

 

상대 Player의 데미지, 방어력 등을 적용해서 넉백을 구현하기 위해 상대 Player의 위치, 회전 데이터 전송에서 사용했던 OnPhotonSerializeView 함수로 데이터 전송하고 넉백을 구현했다.

 

https://kkln2486.tistory.com/429

 

동기화

동기화 1.  PhotonView갱신이 빈번한 경우에 사용ex) 위치 이동, 상태 변경캐릭터의 동기화에 사용 (PhotonView, PhotonTransformView 스크립트 추가)  Setting OwnershipFixed : Ownership 고정Takeover : Ownership을 클라

kkln2486.tistory.com

 

 

트러블 슈팅


1. PhotonAnimatorView 동기화 시, 씹힘 현상


 

연속적으로 애니메이션이 실행되면 동기화가 어느정도 되지만, 한번씩 위와 같이 상대 PC에서는 동기화가 되지 않아서 애니메이션이 실행되지 않는다. 

 

 

 

Synchronize Parameters 또한 모두 Continuous로 설정했기 때문에 추가적인 개선 방법이 있다면 업데이트 하도록 하겠다.