forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Сеть (http://forum.boolean.name/forumdisplay.php?f=169)
-   -   Photon Network плавное движение. (http://forum.boolean.name/showthread.php?t=18607)

Alex_Witcher 09.10.2013 04:45

Photon Network плавное движение.
 
Начал осваивать Фотон (Cloud), для синхронизации движения-вешаю на объект-PhotonView, изначально сетевые объекты двигались очень дергано, нашел такой скрипт для сглаживания движения (интерполяцией):
Код:

ublic class PersonNetwork : Photon.MonoBehaviour
{
    public Vector3 correctPlayerPos = Vector3.zero; //We lerp towards this
    public Quaternion correctPlayerRot = Quaternion.identity; //We lerp towards this
       
    void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)
    {
        if (stream.isWriting)
        {

            //We own this player: send the others our data
                       
            stream.SendNext(transform.position);
            stream.SendNext(transform.rotation);
        }
        else
        {

            //Network player, receive data
                       
            correctPlayerPos = (Vector3)stream.ReceiveNext();
            correctPlayerRot = (Quaternion)stream.ReceiveNext();


        }
    }


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

}

Однако назвать этот вариант оптимальным-нельзя. Например если объект которым я управляю у меня останавливается, то у других клиентов за счет интерполяции-продолжает еще некоторое время двигаться (зависит от множителя "плавности"). +все-же присутствуют не большие подергивания на больших скоростях движения. Может ли кто-то подсказать как улучшить синхронизацию движения ?

pax 09.10.2013 07:09

Ответ: Photon Network плавное движение.
 
1. Двигается он е из-за интерполяции, а из-за пинга. Т. е. то время, за которое пакет доходит от игрока до сервера и потом до другого игрока. Ну и плюс интерполяция.
2. Если в способе передачи стоит Releable Delta Compression, то при потере пакета фотон перезапрашивает его заново. Отсюда лаги дополнительные.
3. Улучшить особо сильно не получится. Вот другой способ интерполяции http://forum.unity3d.com/threads/154...ity-Networking

Alex_Witcher 10.10.2013 21:52

Ответ: Photon Network плавное движение.
 
Спасибо за информацию. Попробую пока сделать что-бы "множитель плавности" при интерполяции менялся в зависимости от скорости объекта. Не настраивать же вручную для каждого случая.


Часовой пояс GMT +4, время: 22:26.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot