Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Pomoc s kódem multiplayer připojení na server

Vytvořil jsem v unity 3d multiplayer hru. Problém je že se hra po připojení dvou hráčů seká. Co mám změnit aby bylo více smínků za vteřinu? Dík

using UnityEngine;
using gui = UnityEngine.GUILayout;

public class GameMenu : MonoBehaviour
{
    public GameObject PlayerPrefab;
    string ip = "192.168.0.250";

    public void CreatePlayer()
    {
        connected = true;
        var g = (GameObject)Network.Instantiate(PlayerPrefab, transform.position, transform.rotation, 1);
        g.camera.enabled = true;
        camera.enabled = false;
    }
    void OnDisconnectedFromServer()
    {
        connected = false;
    }
    void OnPlayerDisconnected(NetworkPlayer pl)
    {
        Network.DestroyPlayerObjects(pl);
    }
    void OnConnectedToServer()
    {
        CreatePlayer();
    }
    void OnServerInitialized()
    {
        CreatePlayer();
    }
    bool connected;
    void OnGUI()
    {
        if (!connected)
        {
            ip = gui.TextField(ip);
            if (gui.Button("connect"))
            {
                Network.Connect(ip, 5300);
            }
            if (gui.Button("host"))
            {
                Network.InitializeServer(10, 5300, false);
            }
        }
    }
}
Předmět Autor Datum
Z tohohle kódu se toho moc poznat nedá.
Wikan 25.08.2012 20:20
Wikan
A z tohoto? var cameraTransform : Transform; private var _target : Transform; // The distance in th…
Pepa Vojteš 25.08.2012 20:31
Pepa Vojteš
A to je celý kód?
ERASER 25.08.2012 20:27
ERASER
Je jich asi 5
Pepa Vojteš 25.08.2012 20:31
Pepa Vojteš
Kam se hráči připojují? K nějakému serveru, nebo k jednomu z nich?
Wikan 25.08.2012 20:33
Wikan
Spustím tu hru 2x .Jednou jako host, a podruhy se připojím (connect). Nahrál jsem všechny ty kódy se…
Pepa Vojteš 25.08.2012 20:47
Pepa Vojteš
Takže tvůj stroj musí počítat dvě hry najednou? No to se pak nediv, že je to pomalé.
Wikan 25.08.2012 20:51
Wikan
Aha, tak ja to spustím na dvou mašinach a pak napíšu. Ale stejně zatím dík
Pepa Vojteš 25.08.2012 20:55
Pepa Vojteš
Spustil jsem hostitekský na mém PC, a připojil se přes sít z jiného PC. A seká se te děsně. Přitom k…
Pepa Vojteš 25.08.2012 21:15
Pepa Vojteš
Nemůže to bejt v tomto? private var motor : CharacterMotor; // Use this for initialization function… poslední
Pepa Vojteš 25.08.2012 22:29
Pepa Vojteš

A z tohoto?

var cameraTransform : Transform;
private var _target : Transform;
// The distance in the x-z plane to the target

var distance = 7.0;
// the height we want the camera to be above the target
var height = 3.0;
var angularSmoothLag = 0.3;
var angularMaxSpeed = 15.0;
var heightSmoothLag = 0.3;
var snapSmoothLag = 0.2;
var snapMaxSpeed = 720.0;
var clampHeadPositionScreenSpace = 0.75;
var lockCameraTimeout = 0.2;
private var headOffset = Vector3.zero;
private var centerOffset = Vector3.zero;
private var heightVelocity = 0.0;
private var angleVelocity = 0.0;
private var snap = false;
private var controller : ThirdPersonController;
private var targetHeight = 100000.0; 
function Awake ()
{
	
function DebugDrawStuff ()
{
	Debug.DrawLine(_target.position, _target.position + headOffset);

}
function AngleDistance (a : float, b : float)
{
	a = Mathf.Repeat(a, 360);
	b = Mathf.Repeat(b, 360);
	
	return Mathf.Abs(b - a);
}
function Apply (dummyTarget : Transform, dummyCenter : Vector3)
{
	// Early out if we don't have a target
	if (!controller)
		return;
	
	var targetCenter = _target.position + centerOffset;
	var targetHead = _target.position + headOffset;

//	DebugDrawStuff();

		{
		if (controller.GetLockCameraTimer () < lockCameraTimeout)
		{
			targetAngle = currentAngle;
		}

		// Lock the camera when moving backwards!
		// * It is really confusing to do 180 degree spins when turning around.
		if (AngleDistance (currentAngle, targetAngle) > 160 && controller.IsMovingBackwards ())
			targetAngle += 180;

		
	
	// Set the height of the camera
	cameraTransform.position.y = currentHeight;
	
	// Always look at the target	
	SetUpRotation(targetCenter, targetHead);
}

function LateUpdate () {
	Apply (transform, Vector3.zero);
}

function Cut (dummyTarget : Transform, dummyCenter : Vector3)
{
	var oldHeightSmooth = heightSmoothLag;
	var oldSnapMaxSpeed = snapMaxSpeed;
	var oldSnapSmooth = snapSmoothLag;
	
	snapMaxSpeed = 10000;
	snapSmoothLag = 0.001;
	heightSmoothLag = 0.001;
	
	snap = true;
	Apply (transform, Vector3.zero);
	
	heightSmoothLag = oldHeightSmooth;
	snapMaxSpeed = oldSnapMaxSpeed;
	snapSmoothLag = oldSnapSmooth;
}


	else
	{
		extraLookAngle = extraLookAngle - centerToTopAngle;
		cameraTransform.rotation *= Quaternion.Euler(-extraLookAngle, 0, 0);
	}
}
function GetCenterOffset ()
{
	return centerOffset;
}

Spustil jsem hostitekský na mém PC, a připojil se přes sít z jiného PC. A seká se te děsně. Přitom když zakládám server na hru "Iron storm" tam mam nejlepší ping ze všech co maj založený mapy. Takže to musí bejt v tich kódech něco.

Nemůže to bejt v tomto?

private var motor : CharacterMotor;

// Use this for initialization
function Awake () {
	motor = GetComponent(CharacterMotor);
}

// Update is called once per frame
function Update () {
	// Get the input vector from kayboard or analog stick
	var directionVector = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
	
	if (directionVector != Vector3.zero) {
		// Get the length of the directon vector and then normalize it
		// Dividing by the length is cheaper than normalizing when we already have the length anyway
		var directionLength = directionVector.magnitude;
		directionVector = directionVector / directionLength;
		
		// Make sure the length is no bigger than 1
		directionLength = Mathf.Min(1, directionLength);
		
		// Make the input vector more sensitive towards the extremes and less sensitive in the middle
		// This makes it easier to control slow speeds when using analog sticks
		directionLength = directionLength * directionLength;
		
		// Multiply the normalized direction vector by the modified length
		directionVector = directionVector * directionLength;
	}
	
	// Apply the direction to the CharacterMotor
	motor.inputMoveDirection = transform.rotation * directionVector;
	motor.inputJump = Input.GetButton("Jump");
}

// Require a character controller to be attached to the same game object
@script RequireComponent (CharacterMotor)
@script AddComponentMenu ("Character/FPS Input Controller")

Zpět do poradny Odpovědět na původní otázku Nahoru