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


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\_objectsarenaFBX.fbx
     目录           0  2010-03-22 22:27  __MACOSX
     目录           0  2010-03-22 22:27  __MACOSXAssets
     目录           0  2010-03-22 22:27  __MACOSXAssets\_objects
     文件         193  2009-01-13 16:11  __MACOSXAssets\_objects._arenaFBX.fbx
     文件      553200  2009-01-13 16:11  Assets\_objectsarenaLitFBX.fbx
     文件         193  2009-01-13 16:11  __MACOSXAssets\_objects._arenaLitFBX.fbx
     文件       71104  2009-01-13 16:11  Assets\_objectscolumnOneFBX.fbx
     文件         193  2009-01-13 16:11  __MACOSXAssets\_objects._columnOneFBX.fbx
     目录           0  2010-03-22 20:37  Assets\_objectsMaterials
     文件        3413  2009-11-18 13:17  Assets\_objectsMaterialsarena-arenatexture.mat
     目录           0  2010-03-22 22:27  __MACOSXAssets\_objectsMaterials
     文件         193  2009-11-18 13:17  __MACOSXAssets\_objectsMaterials._arena-arenatexture.mat
     文件        3269  2009-11-18 13:17  Assets\_objectsMaterialsarena-arenatexture1.mat
     文件         193  2009-11-18 13:17  __MACOSXAssets\_objectsMaterials._arena-arenatexture1.mat
     文件        3413  2009-11-18 13:17  Assets\_objectsMaterialsarena-floortexture.mat
     文件         193  2009-11-18 13:17  __MACOSXAssets\_objectsMaterials._arena-floortexture.mat
     文件        3269  2009-11-18 13:17  Assets\_objectsMaterialsarena-no name.mat
     文件         193  2009-11-18 13:17  __MACOSXAssets\_objectsMaterials._arena-no name.mat
     文件        3413  2009-11-18 13:17  Assets\_objectsMaterialsarenatexture 1.mat
     文件         193  2009-11-18 13:17  __MACOSXAssets\_objectsMaterials._arenatexture 1.mat
     文件        3413  2009-11-18 13:17  Assets\_objectsMaterialsarenatexture 2.mat
     文件         193  2009-11-18 13:17  __MACOSXAssets\_objectsMaterials._arenatexture 2.mat
     文件        3696  2009-11-18 13:17  Assets\_objectsMaterialsarenatexture.mat
     文件         193  2009-11-18 13:17  __MACOSXAssets\_objectsMaterials._arenatexture.mat
     文件        3502  2009-11-18 13:17  Assets\_objectsMaterialscolumnone-lambert5.mat
     文件         193  2009-11-18 13:17  __MACOSXAssets\_objectsMaterials._columnone-lambert5.mat
     文件        3436  2009-11-18 13:17  Assets\_objectsMaterialscolumnsquare-columnsquaretexture.mat
     文件         193  2009-11-18 13:17  __MACOSXAssets\_objectsMaterials._columnsquare-columnsquaretexture.mat
............此处省略933个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)