资源简介

Unity3D StarTrooper多人游戏源码(可运行)

资源截图

代码片段和文件信息

using UnityEngine;
using System.Collections;

public class NetworkRigidbody : MonoBehaviour {

public double m_InterpolationBackTime = 0.1;
public double m_ExtrapolationLimit = 0.5;

internal struct  State
{
internal double timestamp;
internal Vector3 pos;
internal Vector3 velocity;
internal Quaternion rot;
internal Vector3 angularVelocity;
}

// We store twenty states with “playback“ information
State[] m_BufferedState = new State[20];
// Keep track of what slots are used
int m_TimestampCount;

void OnSerializeNetworkView(BitStream stream NetworkMessageInfo info) {
// Send data to server
if (stream.isWriting)
{
Vector3 pos = rigidbody.position;
Quaternion rot = rigidbody.rotation;
Vector3 velocity = rigidbody.velocity;
Vector3 angularVelocity = rigidbody.angularVelocity;

stream.Serialize(ref pos);
stream.Serialize(ref velocity);
stream.Serialize(ref rot);
stream.Serialize(ref angularVelocity);
}
// Read data from remote client
else
{
Vector3 pos = Vector3.zero;
Vector3 velocity = Vector3.zero;
Quaternion rot = Quaternion.identity;
Vector3 angularVelocity = Vector3.zero;
stream.Serialize(ref pos);
stream.Serialize(ref velocity);
stream.Serialize(ref rot);
stream.Serialize(ref angularVelocity);

// Shift the buffer sideways deleting state 20
for (int i=m_BufferedState.Length-1;i>=1;i--)
{
m_BufferedState[i] = m_BufferedState[i-1];
}

// Record current state in slot 0
State state;
state.timestamp = info.timestamp;
state.pos = pos;
state.velocity = velocity;
state.rot = rot;
state.angularVelocity = angularVelocity;
m_BufferedState[0] = state;

// Update used slot count however never exceed the buffer size
// Slots aren‘t actually freed so this just makes sure the buffer is
// filled up and that uninitalized slots aren‘t used.
m_TimestampCount = Mathf.Min(m_TimestampCount + 1 m_BufferedState.Length);

// Check if states are in order if it is inconsistent you could reshuffel or 
// drop the out-of-order state. Nothing is done here
for (int i=0;i {
if (m_BufferedState[i].timestamp < m_BufferedState[i+1].timestamp)
Debug.Log(“State inconsistent“);
}
}
}

// We have a window of interpolationBackTime where we basically play 
// By having interpolationBackTime the average ping you will usually use interpolation.
// And only if no more data arrives we will use extra polation
void Update () {
// This is the target playback time of the rigid body
double interpolationTime = Network.time - m_InterpolationBackTime;

// Use interpolation if the target playback time is present in the buffer
if (m_BufferedState[0].timestamp > interpolationTime)
{
// Go through buffer and find correct state to play back
for (int i=0;i {
if (m_BufferedState[i].timestamp <= interpolationTime || i == m_TimestampCount-1)
{
/

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2010-03-22 21:25  Assets\
     目录           0  2010-03-22 21:33  Assets\_objects\
     文件      171120  2009-01-13 16:11  Assets\_objects\arenaFBX.fbx
     目录           0  2010-03-22 22:27  __MACOSX\
     目录           0  2010-03-22 22:27  __MACOSX\Assets\
     目录           0  2010-03-22 22:27  __MACOSX\Assets\_objects\
     文件         193  2009-01-13 16:11  __MACOSX\Assets\_objects\._arenaFBX.fbx
     文件      553200  2009-01-13 16:11  Assets\_objects\arenaLitFBX.fbx
     文件         193  2009-01-13 16:11  __MACOSX\Assets\_objects\._arenaLitFBX.fbx
     文件       71104  2009-01-13 16:11  Assets\_objects\columnOneFBX.fbx
     文件         193  2009-01-13 16:11  __MACOSX\Assets\_objects\._columnOneFBX.fbx
     目录           0  2010-03-22 20:37  Assets\_objects\Materials\
     文件        3413  2009-11-18 13:17  Assets\_objects\Materials\arena-arenatexture.mat
     目录           0  2010-03-22 22:27  __MACOSX\Assets\_objects\Materials\
     文件         193  2009-11-18 13:17  __MACOSX\Assets\_objects\Materials\._arena-arenatexture.mat
     文件        3269  2009-11-18 13:17  Assets\_objects\Materials\arena-arenatexture1.mat
     文件         193  2009-11-18 13:17  __MACOSX\Assets\_objects\Materials\._arena-arenatexture1.mat
     文件        3413  2009-11-18 13:17  Assets\_objects\Materials\arena-floortexture.mat
     文件         193  2009-11-18 13:17  __MACOSX\Assets\_objects\Materials\._arena-floortexture.mat
     文件        3269  2009-11-18 13:17  Assets\_objects\Materials\arena-no name.mat
     文件         193  2009-11-18 13:17  __MACOSX\Assets\_objects\Materials\._arena-no name.mat
     文件        3413  2009-11-18 13:17  Assets\_objects\Materials\arenatexture 1.mat
     文件         193  2009-11-18 13:17  __MACOSX\Assets\_objects\Materials\._arenatexture 1.mat
     文件        3413  2009-11-18 13:17  Assets\_objects\Materials\arenatexture 2.mat
     文件         193  2009-11-18 13:17  __MACOSX\Assets\_objects\Materials\._arenatexture 2.mat
     文件        3696  2009-11-18 13:17  Assets\_objects\Materials\arenatexture.mat
     文件         193  2009-11-18 13:17  __MACOSX\Assets\_objects\Materials\._arenatexture.mat
     文件        3502  2009-11-18 13:17  Assets\_objects\Materials\columnone-lambert5.mat
     文件         193  2009-11-18 13:17  __MACOSX\Assets\_objects\Materials\._columnone-lambert5.mat
     文件        3436  2009-11-18 13:17  Assets\_objects\Materials\columnsquare-columnsquaretexture.mat
     文件         193  2009-11-18 13:17  __MACOSX\Assets\_objects\Materials\._columnsquare-columnsquaretexture.mat
............此处省略933个文件信息

评论

共有 条评论