forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Сеть (http://forum.boolean.name/forumdisplay.php?f=169)
-   -   Маленькая проблемка в моей сети (http://forum.boolean.name/showthread.php?t=17840)

SGREED 05.02.2013 23:53

Маленькая проблемка в моей сети
 
Вложений: 1
Скажите пожалуйста, у меня такая проблемка:

Я создаю сервер на компьютере, а клиент ко мне подключаеться все нормально.
Вот только когда я спавнюсь первым на сервере у меня устанавливаеться камера и все играеться.. а потом приходит другой игрок и получаеться так что:
Я вижу своего игрока но теряеться управление, мной управляет другой игрок который присоединился, а он видит тоже себя но только я им управляю, получаеться перехрестная игра или как правльно сказать, я вижу себя а управляет мной другой игрок, и он также :)
Что это может быть?

pax 05.02.2013 23:55

Ответ: Маленькая проблемка в моей сети
 
инвертируй isMine

SGREED 06.02.2013 00:07

Ответ: Маленькая проблемка в моей сети
 
Цитата:

using UnityEngine;
[RequireComponent(typeof(NetworkView))]
public class PlayerScript : MonoBehaviour
{
public float moveSpeed = 2;
public float turnSpeed = 90;
private CharacterController _controller;
private Transform _thisTransform;
public GameObject fpsPrefab;
public GameObject locomotionPrefab;
private GameObject controlledObject;
public void Start()
{
_controller = GetComponent<CharacterController>();

_thisTransform = transform;
}
public void Awake()
{
if (!networkView.isMine)
{
enabled = false;
controlledObject = Instantiate(locomotionPrefab) as GameObject;
}
else
{
controlledObject = Instantiate(fpsPrefab) as GameObject;
}
}

public void Update()
{

if (networkView.isMine)
{
_controller.Move(_thisTransform.forward * moveSpeed * Time.deltaTime * Input.GetAxis("Vertical") +
Vector3.down * 10.0f * Time.deltaTime);
Quaternion rot = Quaternion.AngleAxis(
turnSpeed * Time.deltaTime * Input.GetAxis("Horizontal"), Vector3.up);
_thisTransform.rotation *= rot;
}
}
public void OnDestroy()
{
Destroy(controlledObject);
}


public void OnSerializeNetworkView(BitStream stream, NetworkMessageInfo info)
{
if (stream.isWriting)
{

Vector3 pos = controlledObject.transform.position;
stream.Serialize(ref pos);

}
else
{

Vector3 posReceive = Vector3.zero;
stream.Serialize(ref posReceive);
controlledObject.transform.position = posReceive;

}
}
}
где именно ?

pax 06.02.2013 00:19

Ответ: Маленькая проблемка в моей сети
 
Ты точно уверен что у тебя управление не правильно, а не камеры перепутаны?

SGREED 06.02.2013 00:22

Ответ: Маленькая проблемка в моей сети
 
А знаешь :) ты прав)
Как это сделать?
Что надо изменить?

pax 06.02.2013 00:46

Ответ: Маленькая проблемка в моей сети
 
камерой у тебя другой скрипт управляет, в нем должна быть проверка в Start
PHP код:

if (!networkView.isMine

    
camera.enabled false;



SGREED 06.02.2013 01:06

Ответ: Маленькая проблемка в моей сети
 
Я проверил и получилось такое :
У моего игрока камера стоит верно, также как и в другого который ко мне подключился
и здесь та проблема
У меня свой игрок но ним управляет только другой, а я управляю его игроком, он тоже не может своим, здесь как будто перепутаны управления.
У меня работает все да) вот только мной управляет другой)
Камеры стоят теперь нормально. Спасибо за камеру :)
Помогите с этим непонятным дистанционным управлением :)

pax 06.02.2013 01:09

Ответ: Маленькая проблемка в моей сети
 
Ну единственное в чем может быть ошибка - спавн твоего игрока выполняет оппонет, а ты спавнишь его.

SGREED 06.02.2013 01:15

Ответ: Маленькая проблемка в моей сети
 
Вложений: 1
Мой код спавна
PHP код:

using UnityEngine
using System.Collections

public class 
SpawnScript MonoBehaviour 

    public 
Transform playerPrefab


    public 
void OnServerInitialized() 
    { 
        
Spawnplayer(); 
    } 

    public 
void OnConnectedToServer() 
    { 
        
Spawnplayer(); 
    } 

    public 
void Spawnplayer() 
    { 

        
Transform myNewTrans = (Transform)Network.Instantiate
            
playerPrefabtransform.positiontransform.rotation0); 

    } 

    public 
void OnPlayerDisconnected(NetworkPlayer player
    { 
        
Debug.Log("Clean up after player " player); 
        
Network.RemoveRPCs(player); 
        
Network.DestroyPlayerObjects(player); 
    } 

    public 
void OnDisconnectedFromServer(NetworkDisconnection info
    { 
        
Debug.Log("Clean up a bit after server quit"); 
        
Network.RemoveRPCs(Network.player); 
        
Network.DestroyPlayerObjects(Network.player); 
        
Application.LoadLevel(Application.loadedLevel); 
    } 


может что то в нем?

SGREED 06.02.2013 19:41

Ответ: Маленькая проблемка в моей сети
 
Вложений: 1
Все равно я играю другим игроком а он мной
Вот что бы проверить как пашет сеть запустите два раза игру
Посмотрите и скажите что это может быть??

pax 06.02.2013 20:29

Ответ: Маленькая проблемка в моей сети
 
Скрипт Player где-то в игре используется?

SGREED 06.02.2013 20:57

Ответ: Маленькая проблемка в моей сети
 
Нет не используеться, это был мой начальный скрипт для управления игрока, но я решил игру сделать в сети, и я с того скрипта кинул код в playerscript, я не использую скрипт player, его нужно ваще удалить :)
может рах тебе кинуть сам мой проэкт? посмотришь может..

pax 06.02.2013 21:08

Ответ: Маленькая проблемка в моей сети
 
Проект не надо, спасибо. Код вроде правильный, я с Unity сетью практически не работал, но по идее все нормально должно быть.

SGREED 06.02.2013 21:13

Ответ: Маленькая проблемка в моей сети
 
:) ясненько, а ты смотрел я там выше кидал свою игру(эту с проблемкой)
видел как все работает?

pax 06.02.2013 21:30

Ответ: Маленькая проблемка в моей сети
 
Смотрел код, теперь посмотрел игру - ты управляешь своим игроком, но смотришь через камеру оппонента

SGREED 06.02.2013 21:49

Ответ: Маленькая проблемка в моей сети
 
да верно) это наверное ошибка в скрипте?

pax 07.02.2013 07:10

Ответ: Маленькая проблемка в моей сети
 
Камера оппонента не выключается видимо

SGREED 07.02.2013 18:45

Ответ: Маленькая проблемка в моей сети
 
хм, значит что то со скриптом.

SGREED 09.02.2013 17:07

Ответ: Маленькая проблемка в моей сети
 
Так что тогда делать?

pax 09.02.2013 17:20

Ответ: Маленькая проблемка в моей сети
 
Скриншот структуры сцены, скриншот структуры префаба игрока. И последние версии скриптов.

SGREED 19.02.2013 21:09

Ответ: Маленькая проблемка в моей сети
 
Интересно, и очень интересно
Вот создал я создал скрипт замбака, и он ходит за мной как положено за моим объектом,
А вот я создал сервер, и таких игроков уже два, и интересно за кем будет ходить зомбак??? :dontknow:

SGREED 23.06.2013 17:04

Ответ: Маленькая проблемка в моей сети
 
Возникла проблема в двери которая должна открываться по сети
вот скрипт самой двери без компонентов сети
PHP код:

using UnityEngine;
using System.Collections;
public class 
open_door MonoBehaviour 
{
    public 
float smooth = (float)2.0;
    public 
float DoorOpenAngle = (float)110.0;
    public 
float DoorCloseAngle = (float)0.0;
    public 
bool open false;
    public 
bool enter false;
    public 
GameObject pl;
    public 
string defined_key "e";
    
void Update () 
    {
        
        if(
open == true)
        {
            var 
target Quaternion.Euler (transform.localRotation.xDoorOpenAngletransform.localRotation.z);
            
transform.localRotation Quaternion.Slerp(transform.localRotationtarget,
            
Time.deltaTime smooth);
        }
    
        if(
open == false)
        {
            var 
target1 Quaternion.Euler (transform.localRotation.xDoorCloseAngletransform.localRotation.z);
            
transform.localRotation Quaternion.Slerp(transform.localRotationtarget1,
            
Time.deltaTime smooth);
        }
    
        if(
enter == true)
        {
            if(
Input.GetKeyDown(defined_key))
            {
                
open = !open;
            }
        }    
    }
    
void OnTriggerEnter(Collider other)
    { 
        if (
other.gameObject.tag == "Player"
        {
            (
enter) = true;
        }
    }
    
void OnTriggerExit (Collider other)
    {
        if (
other.gameObject.tag == "Player"
        {
            (
enter) = false;
        }
    }


создание сети взято из примера " рах ", все игроки подключаються, все работает стабильно, а вот не могу понять как с дверью, когда в проэкте то дверь открываеться, а вот уже скомпилированая то нет уже.
подскажите что именно в этом скрипте нужно добавить?
потому что я уморолся з isMine((

SGREED 23.06.2013 22:28

Ответ: Маленькая проблемка в моей сети
 
никто не поможет (((((((((

moka 25.06.2013 02:07

Ответ: Маленькая проблемка в моей сети
 
Вот жеж Unity развелись, вроди такая большая тема "Сеть", на С++ надо было сам сетевой протокол писать, потом всю логику, а тут 30 строк кода, и уже потерялись.
Вот такие и выходят на рынок в резюме "Разработчик Игр".

Пробуй и эксперементируй. Анализируй код абстрактно.

Gector 25.06.2013 19:22

Ответ: Маленькая проблемка в моей сети
 
Не секу что там с дверью. Но уже вижу непонятные вещи. Зачем ты при создании float (присвоение начальных значений) переводишь double значение во float лишний раз?
Код:

public float my_float = 0.1f;
Так не проще?

pax 01.07.2013 00:28

Ответ: Маленькая проблемка в моей сети
 
Что за сеть то хоть? Встроенная? Фотон? какая-то еще?

SGREED 01.07.2013 11:00

Ответ: Маленькая проблемка в моей сети
 
локальная, по твоей статье

pax 01.07.2013 14:50

Ответ: Маленькая проблемка в моей сети
 
Ну если правильно, то события триггера должны обрабатываться только на сервере, а сервер должен всем рассылать состояние.


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

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