Синхронизация Аниматора Photon cloud Unity

Сеть в Unity3D

Синхронизация Аниматора Photon cloud Unity

Сообщение disignkiev 07 ноя 2016, 10:38

Как можно синхронизировать состояние аниматора если включен другой слой аниматора (например есть анимации базовые ходьба прыжки они в одном слое а анимации полёта в другом, как синхронизировать состояние контроллера)?
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class ThirdPersonNetwork : Photon.MonoBehaviour
{
    HeroCamera cameraScript;
    HeroCtrl controllerScript;
    public Animator anim;
        bool firstTake = false;

    private Vector3 correctPlayerVel = Vector3.zero;
    private Vector3 correctPlayerPos = Vector3.zero;//We lerp towards this
    private Quaternion correctPlayerRot = Quaternion.identity; //We lerp towards this
    public Rigidbody myRigidbody { get; private set; }
    void OnEnable()
        {
                firstTake = true;        
        }

   
    void Awake()
    {
                anim = GetComponent<Animator>();
        cameraScript = GetComponent<HeroCamera>();
        controllerScript = GetComponent<HeroCtrl>();
        this.myRigidbody = this.GetComponent<Rigidbody>();


        if (photonView.isMine)
        {
            //MINE: local player, simply enable the local scripts
            cameraScript.enabled = true;
            controllerScript.enabled = true;
           

        }
        else
        {          
            cameraScript.enabled = false;

            controllerScript.enabled = true;
            controllerScript.isControllable = false;
        }

        gameObject.name = gameObject.name + photonView.viewID;
    }

    void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)
    {
        PhotonNetwork.ConnectUsingSettings("Версия игры");
        if (stream.isWriting)
        {
            anim = GetComponent<Animator>();
            //We own this player: send the others our data
            stream.SendNext(anim.GetFloat("AxisX"));
stream.SendNext(anim.GetFloat("AxisY"));
stream.SendNext(anim.GetBool("Jump"));
stream.SendNext(anim.GetBool("Grounded"));
stream.SendNext(anim.GetBool("Falling"));
stream.SendNext(anim.GetFloat("MouseX"));
stream.SendNext(anim.GetBool("Attack1"));
stream.SendNext(anim.GetBool("Attack2"));
stream.SendNext(anim.GetBool("Evade_F"));
stream.SendNext(anim.GetBool("Evade_B"));
stream.SendNext(anim.GetBool("Evade_L"));
stream.SendNext(anim.GetBool("Evade_R"));
stream.SendNext(anim.GetBool("Sprinting"));
stream.SendNext(anim.GetBool("Walking"));
stream.SendNext(anim.GetBool("Sneaking"));
stream.SendNext(anim.GetBool("Balancing"));
stream.SendNext(anim.GetBool("WallRunL"));
stream.SendNext(anim.GetBool("WallRunR"));
stream.SendNext(anim.GetBool("WallRunUp"));
stream.SendNext(anim.GetBool("WallHigh"));
stream.SendNext(anim.GetBool("WallLow"));
stream.SendNext(anim.GetInteger("RandomM"));
stream.SendNext(anim.GetBool("Climb"));
stream.SendNext(anim.GetBool("HangL"));
stream.SendNext(anim.GetBool("HangR"));
stream.SendNext(anim.GetBool("CornerL"));
stream.SendNext(anim.GetBool("CornerR"));
stream.SendNext(anim.GetBool("ClimbShort"));
stream.SendNext(anim.GetBool("Top"));
stream.SendNext(anim.GetBool("ClimbDownShort"));
stream.SendNext(anim.GetBool("ClimbDown"));
stream.SendNext(anim.GetBool("Overhang"));
stream.SendNext(anim.GetBool("Sword"));
stream.SendNext(anim.GetBool("Bow"));
stream.SendNext(anim.GetBool("Pistol"));
stream.SendNext(anim.GetBool("Rifle"));
stream.SendNext(anim.GetBool("StandUp"));
stream.SendNext(anim.GetBool("Dance"));
stream.SendNext(anim.GetBool("Pull"));
stream.SendNext(anim.GetBool("Push"));
stream.SendNext(anim.GetBool("Throw"));
stream.SendNext(anim.GetBool("CanLand"));
stream.SendNext(anim.GetFloat("WaterLevel"));
stream.SendNext(transform.position);
stream.SendNext(transform.rotation);
stream.SendNext(this.myRigidbody.velocity);


        }
        else
        {
            //Network player, receive data
                       
anim.SetFloat("AxisX", (float)stream.ReceiveNext());
anim.SetFloat("AxisY", (float)stream.ReceiveNext());
anim.SetBool("Jump", (bool)stream.ReceiveNext());
anim.SetBool("Grounded", (bool)stream.ReceiveNext());
anim.SetBool("Falling", (bool)stream.ReceiveNext());
anim.SetFloat("MouseX", (float)stream.ReceiveNext());
anim.SetBool("Attack1", (bool)stream.ReceiveNext());
anim.SetBool("Attack2", (bool)stream.ReceiveNext());
anim.SetBool("Evade_F", (bool)stream.ReceiveNext());
anim.SetBool("Evade_B", (bool)stream.ReceiveNext());
anim.SetBool("Evade_L", (bool)stream.ReceiveNext());
anim.SetBool("Evade_R", (bool)stream.ReceiveNext());
anim.SetBool("Sprinting", (bool)stream.ReceiveNext());
anim.SetBool("Walking", (bool)stream.ReceiveNext());
anim.SetBool("Sneaking", (bool)stream.ReceiveNext());
anim.SetBool("Balancing", (bool)stream.ReceiveNext());
anim.SetBool("WallRunL", (bool)stream.ReceiveNext());
anim.SetBool("WallRunR", (bool)stream.ReceiveNext());
anim.SetBool("WallRunUp", (bool)stream.ReceiveNext());
anim.SetBool("WallHigh", (bool)stream.ReceiveNext());
anim.SetBool("WallLow", (bool)stream.ReceiveNext());
anim.SetInteger ("RandomM", (int)stream.ReceiveNext());
anim.SetBool("Climb", (bool)stream.ReceiveNext());
anim.SetBool("HangL", (bool)stream.ReceiveNext());
anim.SetBool("HangR", (bool)stream.ReceiveNext());
anim.SetBool("CornerL", (bool)stream.ReceiveNext());
anim.SetBool("CornerR", (bool)stream.ReceiveNext());
anim.SetBool("ClimbShort", (bool)stream.ReceiveNext());
anim.SetBool("Top", (bool)stream.ReceiveNext());
anim.SetBool("ClimbDownShort", (bool)stream.ReceiveNext());
anim.SetBool("ClimbDown", (bool)stream.ReceiveNext());
anim.SetBool("Overhang", (bool)stream.ReceiveNext());
anim.SetBool("Sword", (bool)stream.ReceiveNext());
anim.SetBool("Bow", (bool)stream.ReceiveNext());
anim.SetBool("Pistol", (bool)stream.ReceiveNext());
anim.SetBool("Rifle", (bool)stream.ReceiveNext());
anim.SetBool("StandUp", (bool)stream.ReceiveNext());
anim.SetBool("Dance", (bool)stream.ReceiveNext());
anim.SetBool("Pull", (bool)stream.ReceiveNext());
anim.SetBool("Push", (bool)stream.ReceiveNext());
anim.SetBool("Throw", (bool)stream.ReceiveNext());
anim.SetBool("CanLand", (bool)stream.ReceiveNext());
anim.SetFloat("WaterLevel", (float)stream.ReceiveNext());
correctPlayerPos = (Vector3)stream.ReceiveNext();
correctPlayerRot = (Quaternion)stream.ReceiveNext();
correctPlayerVel = (Vector3)stream.ReceiveNext();


            // avoids lerping the character from "center" to the "current" position when this client joins

            if (firstTake)
            {
                firstTake = false;
                this.transform.position = correctPlayerPos;
                transform.rotation = correctPlayerRot;
            }
        }
    }


    void Update()
    {
        if (!photonView.isMine)
        {
            //Update remote player (smooth this, this looks good, at the cost of some accuracy)
            this.myRigidbody.velocity = Vector3.Lerp(this.myRigidbody.velocity, correctPlayerVel, Time.deltaTime * 5);
            transform.position = Vector3.Lerp(transform.position, correctPlayerPos, Time.deltaTime * 5);
            transform.rotation = Quaternion.Lerp(transform.rotation, correctPlayerRot, Time.deltaTime * 5);

        }
    }

}

"stream.SendNext контроллер???"
disignkiev
UNец
 
Сообщения: 9
Зарегистрирован: 07 ноя 2016, 10:27

Вернуться в Сеть

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


cron