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

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


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

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