Перенести перемещение на NetworkBehavior

Сеть в Unity3D

Перенести перемещение на NetworkBehavior

Сообщение I_GRIN_I 09 окт 2016, 22:02

Привет, ребят. У меня такая вот проблема: я вообще ничего не понял про то, как передавать позицию с клиента серверу, а с него остальным клиентам. У меня есть персонаж, который двигается благодаря этому скрипту:
Синтаксис:
Используется csharp
using UnityEngine;

public class Moving : MonoBehaviour {
    public bool IsRunning = false;
    public bool IsWDown = false;
    public KeyCode RunKey = KeyCode.LeftShift;
    public float speed = 6.0f;
    public float backspeed = 3.0f;
    public float strafespeed = 3.0f;
    public float RunMultiplier = 1.5f;
    public GameObject player;
    public float rotatespeed;
    void Start () {
        player = this.gameObject;
    }
    void FixedUpdate () {
        if (Input.GetKey(RunKey))
        {
            if (IsRunning == false)
            {
                IsRunning = true;
            }
        }
        else
        {
            IsRunning = false;
        }
        if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.UpArrow))
        {
            if(IsRunning)
            {
                player.transform.position += player.transform.forward * RunMultiplier * speed;
                IsWDown = true;
            }
            else
            {
                IsWDown = true;
                player.transform.position += player.transform.forward * speed;
            }
        }
        else
        {
            IsWDown = false;
        }
        if (Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.DownArrow))
        {
            if(!IsWDown)
            {
                player.transform.position -= player.transform.forward * backspeed;
            }
        }
        if (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow))
        {
            if (!IsWDown)
            {
                if (IsRunning)
                {
                    player.transform.position -= player.transform.right * RunMultiplier * strafespeed;
                }
                else
                {
                    player.transform.position -= player.transform.right * strafespeed;
                }
            }
            else
            {
                if (IsRunning)
                {
                    player.transform.position -= player.transform.right * (RunMultiplier - 1.5f) * strafespeed;
                }
                else
                {
                    player.transform.position -= player.transform.right * (strafespeed - 0.025f);
                }
            }
        }
        else if (Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.RightArrow))
        {
            if (!IsWDown)
            {
                if (IsRunning)
                {
                    player.transform.position += player.transform.right * RunMultiplier * strafespeed;
                }
                else
                {
                    player.transform.position += player.transform.right * strafespeed;
                }
            }
            else
            {
                if (IsRunning)
                {
                    player.transform.position += player.transform.right * (RunMultiplier - 1.5f) * strafespeed;
                }
                else
                {
                    player.transform.position += player.transform.right * (strafespeed - 0.025f);
                }
            }
        }
        Plane playerPlane = new Plane(Vector3.up, transform.position);
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        float hitdist = 0.0f;
        if (playerPlane.Raycast(ray, out hitdist))
        {
            Vector3 targetPoint = ray.GetPoint(hitdist);
            Quaternion targetRotation = Quaternion.LookRotation(targetPoint - transform.position);
            transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, rotatespeed);
        }
    }
}

Но что бы я не делал, как бы не пытался перенести это для каждого игрока, у меня не получалось. То за мышкой поворачиваются все игроки, то идут все в одну сторону. Мб кто объяснит или даже покажет на каком то хорошем примере? Буду очень благодарен. Просто для моей задумки очень нужен нетворкинг, я разобрался уже во всех этих сунквар переменных, но в перемещении не очень.
I_GRIN_I
UNец
 
Сообщения: 10
Зарегистрирован: 27 сен 2016, 16:14

Re: Перенести перемещение на NetworkBehavior

Сообщение surru 13 окт 2016, 16:38

if (!isLocalPlayer) return;
surru
UNец
 
Сообщения: 17
Зарегистрирован: 12 авг 2013, 10:30


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

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

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