fishnet installed

This commit is contained in:
2023-05-31 11:32:21 -04:00
parent 47b25269f1
commit a001fe1b04
1291 changed files with 126631 additions and 1 deletions

View File

@ -0,0 +1,14 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!134 &13400000
PhysicMaterial:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: New Physic Material
dynamicFriction: 0.1
staticFriction: 0.1
bounciness: 0.9
frictionCombine: 1
bounceCombine: 0

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 2315b89c915a21c40982b5867ff7d343
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 13400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 185d003306f80ff4cb148c3f06bf3318
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,256 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &3624261834906416581
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3624261834906416580}
- component: {fileID: 3624261834906416603}
- component: {fileID: 3624261834906416600}
- component: {fileID: 3624261834906416601}
- component: {fileID: 3624261834906416602}
- component: {fileID: -6246116784124330627}
- component: {fileID: 7850526870340082268}
m_Layer: 0
m_Name: PredictedBullet
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &3624261834906416580
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3624261834906416581}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 15.312408, y: 6.390984, z: 25.2406}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 3624261835462115340}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!135 &3624261834906416603
SphereCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3624261834906416581}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 1
serializedVersion: 2
m_Radius: 0.5
m_Center: {x: 0, y: 0, z: 0}
--- !u!114 &3624261834906416600
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3624261834906416581}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 402926ef33e0a894d9fec352693988ac, type: 3}
m_Name:
m_EditorClassIdentifier:
_componentIndexCache: 0
_addedNetworkObject: {fileID: 3624261834906416601}
_networkObjectCache: {fileID: 3624261834906416601}
_implementsPredictionMethods: 0
_graphicalObject: {fileID: 3624261835462115340}
_enableTeleport: 0
_teleportThreshold: 200
_ownerSmoothPosition: 1
_ownerSmoothRotation: 1
_ownerInterpolation: 1
_predictionType: 1
_rigidbody: {fileID: 3624261834906416602}
_rigidbody2d: {fileID: 0}
_spectatorSmoothPosition: 1
_spectatorSmoothRotation: 1
_spectatorSmoothingType: 2
_customSmoothingData:
InterpolationPercent: 1
CollisionInterpolationPercent: 0.1
InterpolationDecreaseStep: 1
InterpolationIncreaseStep: 3
_preconfiguredSmoothingDataPreview:
InterpolationPercent: 1.5
CollisionInterpolationPercent: 0.2
InterpolationDecreaseStep: 1
InterpolationIncreaseStep: 5
_maintainedVelocity: 0
_resendType: 0
_resendInterval: 30
_networkTransform: {fileID: 0}
--- !u!114 &3624261834906416601
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3624261834906416581}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 26b716c41e9b56b4baafaf13a523ba2e, type: 3}
m_Name:
m_EditorClassIdentifier:
NetworkObserver: {fileID: 0}
<PrefabId>k__BackingField: 5
<SpawnableCollectionId>k__BackingField: 0
_scenePathHash: 2281302723
<SceneId>k__BackingField: 0
<AssetPathHash>k__BackingField: 12629563467294206692
_sceneNetworkObjects:
- {fileID: 3624261834906416601}
<IsNested>k__BackingField: 0
<ComponentIndex>k__BackingField: 0
<PredictedSpawn>k__BackingField: {fileID: 7850526870340082268}
_networkBehaviours:
- {fileID: 3624261834906416600}
- {fileID: -6246116784124330627}
- {fileID: 7850526870340082268}
<ParentNetworkObject>k__BackingField: {fileID: 0}
<ChildNetworkObjects>k__BackingField: []
_isNetworked: 1
_isGlobal: 0
_initializeOrder: 0
_defaultDespawnType: 0
--- !u!54 &3624261834906416602
Rigidbody:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3624261834906416581}
serializedVersion: 2
m_Mass: 1
m_Drag: 0
m_AngularDrag: 0.05
m_UseGravity: 0
m_IsKinematic: 0
m_Interpolate: 0
m_Constraints: 0
m_CollisionDetection: 3
--- !u!114 &-6246116784124330627
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3624261834906416581}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fc7792d9dc338aa4dbc8a2f0533cf6ec, type: 3}
m_Name:
m_EditorClassIdentifier:
_componentIndexCache: 1
_addedNetworkObject: {fileID: 3624261834906416601}
_networkObjectCache: {fileID: 3624261834906416601}
_startingForce: {x: 0, y: 0, z: 0}
--- !u!114 &7850526870340082268
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3624261834906416581}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e2b597e1828355a4d994a69cbb11ef85, type: 3}
m_Name:
m_EditorClassIdentifier:
_componentIndexCache: 2
_addedNetworkObject: {fileID: 3624261834906416601}
_networkObjectCache: {fileID: 3624261834906416601}
_allowSpawning: 1
_allowDespawning: 1
_allowSyncTypes: 1
--- !u!1 &3624261835462115341
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3624261835462115340}
- component: {fileID: 3624261835462115330}
- component: {fileID: 3624261835462115331}
m_Layer: 0
m_Name: Graphics
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &3624261835462115340
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3624261835462115341}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 3624261834906416580}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &3624261835462115330
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3624261835462115341}
m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &3624261835462115331
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3624261835462115341}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: e3f599c0ac723194a92f51c91ec73267
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,246 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &3624261834906416581
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3624261834906416580}
- component: {fileID: 3624261834906416603}
- component: {fileID: 3624261834906416600}
- component: {fileID: 3624261834906416601}
- component: {fileID: 3624261834906416602}
- component: {fileID: -6246116784124330627}
- component: {fileID: 7850526870340082268}
m_Layer: 0
m_Name: PredictedSphereSorta
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &3624261834906416580
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3624261834906416581}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 15.312408, y: 6.390984, z: 25.2406}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 3624261835462115340}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!135 &3624261834906416603
SphereCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3624261834906416581}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 1
serializedVersion: 2
m_Radius: 0.5
m_Center: {x: 0, y: 0, z: 0}
--- !u!114 &3624261834906416600
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3624261834906416581}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 402926ef33e0a894d9fec352693988ac, type: 3}
m_Name:
m_EditorClassIdentifier:
_componentIndexCache: 0
_addedNetworkObject: {fileID: 3624261834906416601}
_networkObjectCache: {fileID: 3624261834906416601}
_implementsPredictionMethods: 0
_graphicalObject: {fileID: 3624261835462115340}
_enableTeleport: 0
_teleportThreshold: 200
_ownerSmoothPosition: 1
_ownerSmoothRotation: 1
_ownerInterpolation: 1
_predictionType: 1
_rigidbody: {fileID: 3624261834906416602}
_rigidbody2d: {fileID: 0}
_spectatorSmoothPosition: 1
_spectatorSmoothRotation: 1
_spectatorInterpolation: 4
_overflowMultiplier: 0.1
_maintainedVelocity: 0
_resendType: 0
_resendInterval: 30
_networkTransform: {fileID: 0}
--- !u!114 &3624261834906416601
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3624261834906416581}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 26b716c41e9b56b4baafaf13a523ba2e, type: 3}
m_Name:
m_EditorClassIdentifier:
NetworkObserver: {fileID: 0}
<PrefabId>k__BackingField: 34
<SpawnableCollectionId>k__BackingField: 0
_scenePathHash: 2281302723
<SceneId>k__BackingField: 0
<AssetPathHash>k__BackingField: 12142845903367415924
_sceneNetworkObjects:
- {fileID: 3624261834906416601}
<IsNested>k__BackingField: 0
<ComponentIndex>k__BackingField: 0
<PredictedSpawn>k__BackingField: {fileID: 7850526870340082268}
_networkBehaviours:
- {fileID: 3624261834906416600}
- {fileID: -6246116784124330627}
- {fileID: 7850526870340082268}
<ParentNetworkObject>k__BackingField: {fileID: 0}
<ChildNetworkObjects>k__BackingField: []
_isNetworked: 1
_isGlobal: 0
_initializeOrder: 0
_defaultDespawnType: 0
--- !u!54 &3624261834906416602
Rigidbody:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3624261834906416581}
serializedVersion: 2
m_Mass: 1
m_Drag: 0
m_AngularDrag: 0.05
m_UseGravity: 0
m_IsKinematic: 0
m_Interpolate: 0
m_Constraints: 0
m_CollisionDetection: 0
--- !u!114 &-6246116784124330627
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3624261834906416581}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fc7792d9dc338aa4dbc8a2f0533cf6ec, type: 3}
m_Name:
m_EditorClassIdentifier:
_componentIndexCache: 1
_addedNetworkObject: {fileID: 3624261834906416601}
_networkObjectCache: {fileID: 3624261834906416601}
Force: 20
--- !u!114 &7850526870340082268
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3624261834906416581}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e2b597e1828355a4d994a69cbb11ef85, type: 3}
m_Name:
m_EditorClassIdentifier:
_componentIndexCache: 2
_addedNetworkObject: {fileID: 3624261834906416601}
_networkObjectCache: {fileID: 3624261834906416601}
_allowSpawning: 1
_allowDespawning: 1
--- !u!1 &3624261835462115341
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3624261835462115340}
- component: {fileID: 3624261835462115330}
- component: {fileID: 3624261835462115331}
m_Layer: 0
m_Name: Graphics
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &3624261835462115340
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3624261835462115341}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 3624261834906416580}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &3624261835462115330
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3624261835462115341}
m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &3624261835462115331
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3624261835462115341}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 4e1673ccc2acac543871855a0e8bed71
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,478 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &303449597948771942
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 303449597948771941}
- component: {fileID: 303449597948771939}
- component: {fileID: 303449597948771940}
m_Layer: 0
m_Name: Cube (1)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &303449597948771941
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 303449597948771942}
m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1.5, y: 0.25, z: 0.25}
m_Children: []
m_Father: {fileID: 303449599178274091}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0}
--- !u!33 &303449597948771939
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 303449597948771942}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &303449597948771940
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 303449597948771942}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!1 &303449598114786579
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 303449598114786577}
- component: {fileID: 303449598114786578}
- component: {fileID: 201277551}
- component: {fileID: 201277550}
- component: {fileID: 201277549}
- component: {fileID: 1565754455094126377}
m_Layer: 0
m_Name: RigidbodyPrediction
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &303449598114786577
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 303449598114786579}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -4.80351, y: 0.18147132, z: 5.430528}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 303449599178274091}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!135 &303449598114786578
SphereCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 303449598114786579}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 1
serializedVersion: 2
m_Radius: 0.5
m_Center: {x: 0, y: 0, z: 0}
--- !u!114 &201277551
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 303449598114786579}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9e123f937d4b4f94c9cb6cc03944f786, type: 3}
m_Name:
m_EditorClassIdentifier:
_componentIndexCache: 0
_addedNetworkObject: {fileID: 201277550}
_networkObjectCache: {fileID: 201277550}
_jumpForce: 15
_moveRate: 15
BulletPrefab: {fileID: 3624261834906416601, guid: 4e1673ccc2acac543871855a0e8bed71,
type: 3}
--- !u!114 &201277550
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 303449598114786579}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 26b716c41e9b56b4baafaf13a523ba2e, type: 3}
m_Name:
m_EditorClassIdentifier:
NetworkObserver: {fileID: 0}
<PrefabId>k__BackingField: 2
<SpawnableCollectionId>k__BackingField: 0
_scenePathHash: 0
<SceneId>k__BackingField: 0
<AssetPathHash>k__BackingField: 7596993593060998472
_sceneNetworkObjects: []
<IsNested>k__BackingField: 0
<ComponentIndex>k__BackingField: 0
<PredictedSpawn>k__BackingField: {fileID: 0}
_networkBehaviours:
- {fileID: 201277551}
- {fileID: 1565754455094126377}
<ParentNetworkObject>k__BackingField: {fileID: 0}
<ChildNetworkObjects>k__BackingField: []
_isNetworked: 1
_isGlobal: 0
_initializeOrder: 0
_defaultDespawnType: 0
--- !u!54 &201277549
Rigidbody:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 303449598114786579}
serializedVersion: 2
m_Mass: 1
m_Drag: 0
m_AngularDrag: 0.05
m_UseGravity: 1
m_IsKinematic: 0
m_Interpolate: 0
m_Constraints: 0
m_CollisionDetection: 1
--- !u!114 &1565754455094126377
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 303449598114786579}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 402926ef33e0a894d9fec352693988ac, type: 3}
m_Name:
m_EditorClassIdentifier:
_componentIndexCache: 1
_addedNetworkObject: {fileID: 0}
_networkObjectCache: {fileID: 201277550}
_implementsPredictionMethods: 1
_graphicalObject: {fileID: 303449599178274091}
_enableTeleport: 0
_teleportThreshold: 1
_ownerSmoothPosition: 1
_ownerSmoothRotation: 1
_ownerInterpolation: 1
_predictionType: 1
_rigidbody: {fileID: 201277549}
_rigidbody2d: {fileID: 0}
_spectatorSmoothPosition: 1
_spectatorSmoothRotation: 1
_spectatorSmoothingType: 1
_customSmoothingData:
InterpolationPercent: 1
CollisionInterpolationPercent: 0.1
InterpolationDecreaseStep: 1
InterpolationIncreaseStep: 3
_preconfiguredSmoothingDataPreview:
InterpolationPercent: 1
CollisionInterpolationPercent: 0.1
InterpolationDecreaseStep: 1
InterpolationIncreaseStep: 3
_maintainedVelocity: 0
_resendType: 0
_resendInterval: 30
_networkTransform: {fileID: 0}
--- !u!1 &303449598207636365
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 303449598207636364}
- component: {fileID: 303449598207636362}
- component: {fileID: 303449598207636363}
m_Layer: 0
m_Name: Cube (2)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &303449598207636364
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 303449598207636365}
m_LocalRotation: {x: 0.5, y: 0.5, z: 0.5, w: 0.5}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1.5, y: 0.25, z: 0.25}
m_Children: []
m_Father: {fileID: 303449599178274091}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 90, z: 90}
--- !u!33 &303449598207636362
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 303449598207636365}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &303449598207636363
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 303449598207636365}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!1 &303449598691742042
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 303449598691742041}
- component: {fileID: 303449598691742039}
- component: {fileID: 303449598691742040}
m_Layer: 0
m_Name: Cube
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &303449598691742041
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 303449598691742042}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1.5, y: 0.25, z: 0.25}
m_Children: []
m_Father: {fileID: 303449599178274091}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &303449598691742039
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 303449598691742042}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &303449598691742040
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 303449598691742042}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!1 &303449599178274092
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 303449599178274091}
- component: {fileID: 303449599178274088}
- component: {fileID: 303449599178274089}
m_Layer: 0
m_Name: Sphere (1)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &303449599178274091
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 303449599178274092}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 303449598691742041}
- {fileID: 303449597948771941}
- {fileID: 303449598207636364}
m_Father: {fileID: 303449598114786577}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &303449599178274088
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 303449599178274092}
m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &303449599178274089
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 303449599178274092}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: d904f93bc171bb144ba33c5155282f6f
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 005289ca292137448ba5edc0e1163f4a
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 789e9c92c35f6aa4bb179f6ee73a3061
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,59 @@
using FishNet;
using FishNet.Object;
using FishNet.Object.Synchronizing;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BulletTest : NetworkBehaviour
{
[SyncObject]
public readonly SyncList<int> SyncListNumbers = new SyncList<int>();
[SyncVar]
public Vector3 SyncVarScale = Vector3.one;
public float Force;
public void SendSpeed()
{
//Debug.Log("Local tick " + InstanceFinder.TimeManager.LocalTick);
Rigidbody rb = GetComponent<Rigidbody>();
rb.AddForce((transform.forward * Force), ForceMode.Impulse);
}
public override void OnStartNetwork()
{
base.OnStartNetwork();
transform.localScale = SyncVarScale;
Debug.Log("Reading numbers");
foreach (var item in SyncListNumbers)
Debug.Log(item);
}
public override void OnStartServer()
{
base.OnStartServer();
SendSpeed();
StartCoroutine(__DelayDestroy(3f));
}
private void Update()
{
if (base.TimeManager == null)
return;
if (base.TimeManager.FrameTicked)
{
// Debug.Log(_scale);
//Rigidbody rb = GetComponent<Rigidbody>();
//Debug.Log(rb.velocity.z);
}
}
private IEnumerator __DelayDestroy(float time)
{
yield return new WaitForSeconds(time);
base.Despawn();
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: fc7792d9dc338aa4dbc8a2f0533cf6ec
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,106 @@
using FishNet.Component.Prediction;
using FishNet.Object;
using FishNet.Object.Synchronizing;
using System.Collections;
using UnityEngine;
public class PredictedBullet : NetworkBehaviour
{
//SyncVar to set spawn force. This is set by predicted spawner and sent to the server.
[SyncVar(OnChange = nameof(_startingForce_OnChange))]
private Vector3 _startingForce;
//Tick to set rb to kinematic.
private uint _stopTick = uint.MaxValue;
public void SetStartingForce(Vector3 value)
{
/* If the object is not yet initialized then
* this is being set prior to network spawning.
* Such a scenario occurs because the client which is
* predicted spawning sets the synctype value before network
* spawning to ensure the server receives the value.
* Just as when the server sets synctypes, if they are set
* before the object is spawned it's gauranteed clients will
* get the value in the spawn packet; same practice is used here. */
if (!base.IsSpawned)
SetVelocity(value);
_startingForce = value;
}
//Simple delay destroy so object does not exist forever.
public override void OnStartServer()
{
base.OnStartServer();
StartCoroutine(__DelayDestroy(3f));
}
public override void OnStartNetwork()
{
base.OnStartNetwork();
uint timeToTicks = base.TimeManager.TimeToTicks(0.65f);
/* If server or predicted spawner then add the kinematic
* tick onto local. Predicted spawner and server should behave
* as though no time has elapsed since this spawned. */
if (base.IsServer || base.Owner.IsLocalClient)
{
_stopTick = base.TimeManager.LocalTick + timeToTicks;
}
/* If not server or a client that did not predicted spawn this
* then calculate time passed and set kinematic tick to the same
* amount in the future while subtracting already passed ticks. */
else
{
uint passed = (uint)Mathf.Max(1, base.TimeManager.Tick - base.TimeManager.LastPacketTick);
long stopTick = (base.TimeManager.Tick + timeToTicks - passed - 1);
if (stopTick > 0)
_stopTick = (uint)stopTick;
else
_stopTick = 0;
}
base.TimeManager.OnTick += TimeManager_OnTick;
}
public override void OnStopNetwork()
{
base.OnStopNetwork();
base.TimeManager.OnTick -= TimeManager_OnTick;
}
private void TimeManager_OnTick()
{
if (base.TimeManager.LocalTick >= _stopTick)
{
Rigidbody rb = GetComponent<Rigidbody>();
rb.isKinematic = true;
}
}
/// <summary>
/// When starting force changes set that velocity to the rigidbody.
/// This is an example as how a predicted spawn can modify sync types for server and other clients.
/// </summary>
private void _startingForce_OnChange(Vector3 prev, Vector3 next, bool asServer)
{
SetVelocity(next);
}
/// <summary>
/// Sets velocity of the rigidbody.
/// </summary>
public void SetVelocity(Vector3 value)
{
Rigidbody rb = GetComponent<Rigidbody>();
rb.velocity = value;
}
/// <summary>
/// Destroy object after time.
/// </summary>
private IEnumerator __DelayDestroy(float time)
{
yield return new WaitForSeconds(time);
base.Despawn();
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 2878f245b0c06ce49b3e98d5984e8d41
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,285 @@
using FishNet;
using FishNet.Object;
using FishNet.Object.Prediction;
using FishNet.Transporting;
using UnityEngine;
/*
*
* See TransformPrediction.cs for more detailed notes.
*
*/
namespace FishNet.Example.Prediction.Rigidbodies
{
public class RigidbodyPrediction : NetworkBehaviour
{
#region Types.
public struct MoveData : IReplicateData
{
public bool Jump;
public float Horizontal;
public float Vertical;
public MoveData(bool jump, float horizontal, float vertical)
{
Jump = jump;
Horizontal = horizontal;
Vertical = vertical;
_tick = 0;
}
private uint _tick;
public void Dispose() { }
public uint GetTick() => _tick;
public void SetTick(uint value) => _tick = value;
}
public struct ReconcileData : IReconcileData
{
public Vector3 Position;
public Quaternion Rotation;
public Vector3 Velocity;
public Vector3 AngularVelocity;
public ReconcileData(Vector3 position, Quaternion rotation, Vector3 velocity, Vector3 angularVelocity)
{
Position = position;
Rotation = rotation;
Velocity = velocity;
AngularVelocity = angularVelocity;
_tick = 0;
}
private uint _tick;
public void Dispose() { }
public uint GetTick() => _tick;
public void SetTick(uint value) => _tick = value;
}
#endregion
#region Serialized.
[SerializeField]
private float _jumpForce = 15f;
[SerializeField]
private float _moveRate = 15f;
#endregion
#region Private.
/// <summary>
/// Rigidbody on this object.
/// </summary>
private Rigidbody _rigidbody;
/// <summary>
/// Next time a jump is allowed.
/// </summary>
private float _nextJumpTime;
/// <summary>
/// True to jump next frame.
/// </summary>
private bool _jump;
#endregion
#region Predicted spawning.
/// <summary>
/// Prefab to spawn for predicted spawning.
/// </summary>
public NetworkObject BulletPrefab;
/// <summary>
/// True if a spawn is queued from input.
/// </summary>
private bool _spawnBullet;
/// <summary>
/// True if a despawn is queued from input.
/// </summary>
private bool _despawnBullet;
/// <summary>
/// Last spawned bullet. Used to test predicted despawn.
/// </summary>
private NetworkObject _lastSpawnedBullet;
#endregion
private void Awake()
{
_rigidbody = GetComponent<Rigidbody>();
InstanceFinder.TimeManager.OnTick += TimeManager_OnTick;
InstanceFinder.TimeManager.OnPostTick += TimeManager_OnPostTick;
}
private void OnDestroy()
{
if (InstanceFinder.TimeManager != null)
{
InstanceFinder.TimeManager.OnTick -= TimeManager_OnTick;
InstanceFinder.TimeManager.OnPostTick -= TimeManager_OnPostTick;
}
}
public override void OnStartClient()
{
base.OnStartClient();
base.PredictionManager.OnPreReplicateReplay += PredictionManager_OnPreReplicateReplay;
}
public override void OnStopClient()
{
base.OnStopClient();
base.PredictionManager.OnPreReplicateReplay -= PredictionManager_OnPreReplicateReplay;
}
private void Update()
{
if (base.IsOwner)
{
if (Input.GetKeyDown(KeyCode.RightAlt))
{
_rigidbody.velocity = Vector3.zero;
_rigidbody.angularVelocity = Vector3.zero;
}
if (Input.GetKeyDown(KeyCode.Space) && Time.time > _nextJumpTime)
{
_nextJumpTime = Time.time + 1f;
_jump = true;
}
else if (Input.GetKeyDown(KeyCode.LeftShift))
{
_spawnBullet = true;
}
//else if (Input.GetKeyDown(KeyCode.LeftAlt))
//{
// _despawnBullet = true;
//}
}
}
/// <summary>
/// Called every time any predicted object is replaying. Replays only occur for owner.
/// Currently owners may only predict one object at a time.
/// </summary>
private void PredictionManager_OnPreReplicateReplay(uint arg1, PhysicsScene arg2, PhysicsScene2D arg3)
{
/* Server does not replay so it does
* not need to add gravity. */
if (!base.IsServer)
AddGravity();
}
private void TimeManager_OnTick()
{
if (base.IsOwner)
{
Reconciliation(default, false);
BuildMoveData(out MoveData md);
Move(md, false);
//Predicted spawning example.
TryDespawnBullet();
TrySpawnBullet();
}
if (base.IsServer)
{
Move(default, true);
}
/* Server and all clients must add the additional gravity.
* Adding gravity is not necessarily required in general but
* to make jumps more snappy extra gravity is added per tick.
* All clients and server need to simulate the gravity to keep
* prediction equal across the network. */
AddGravity();
}
private void TimeManager_OnPostTick()
{
/* Reconcile is sent during PostTick because we
* want to send the rb data AFTER the simulation. */
if (base.IsServer)
{
ReconcileData rd = new ReconcileData(transform.position, transform.rotation, _rigidbody.velocity, _rigidbody.angularVelocity);
Reconciliation(rd, true);
}
}
/// <summary>
/// Builds a MoveData to use within replicate.
/// </summary>
/// <param name="md"></param>
private void BuildMoveData(out MoveData md)
{
md = default;
float horizontal = Input.GetAxisRaw("Horizontal");
float vertical = Input.GetAxisRaw("Vertical");
if (horizontal == 0f && vertical == 0f && !_jump)
return;
md = new MoveData(_jump, horizontal, vertical);
_jump = false;
}
/// <summary>
/// PredictedObject example (unpolished)
/// </summary>
private void TrySpawnBullet()
{
if (_spawnBullet)
{
_spawnBullet = false;
NetworkObject nob = Instantiate(BulletPrefab, transform.position + (transform.forward * 1f), transform.rotation);
//Set last spawned to test destroy with ALT key.
_lastSpawnedBullet = nob;
//Set force to 100f at current forward.
PredictedBullet bt = nob.GetComponent<PredictedBullet>();
bt.SetStartingForce(transform.forward * 20f);
//Spawn client side, which will send the predicted spawn to server.
base.Spawn(nob, base.Owner);
}
}
/// <summary>
/// PredictedObject example (unpolished)
/// </summary>
private void TryDespawnBullet()
{
if (_despawnBullet)
{
_despawnBullet = false;
_lastSpawnedBullet?.Despawn();
}
}
/// <summary>
/// Adds gravity to the rigidbody.
/// </summary>
private void AddGravity()
{
_rigidbody.AddForce(Physics.gravity * 2f);
}
[Replicate]
private void Move(MoveData md, bool asServer, Channel channel = Channel.Unreliable, bool replaying = false)
{
Vector3 forces = new Vector3(md.Horizontal, 0f, md.Vertical) * _moveRate;
_rigidbody.AddForce(forces);
if (md.Jump)
_rigidbody.AddForce(new Vector3(0f, _jumpForce, 0f), ForceMode.Impulse);
}
[Reconcile]
private void Reconciliation(ReconcileData rd, bool asServer, Channel channel = Channel.Unreliable)
{
transform.position = rd.Position;
transform.rotation = rd.Rotation;
_rigidbody.velocity = rd.Velocity;
_rigidbody.angularVelocity = rd.AngularVelocity;
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 9e123f937d4b4f94c9cb6cc03944f786
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: