feat: add base functionality
Add ServerPlayerSpawnPoints.cs with its functionality Add to Trooper OnServerSpawnPlayer() for spawning on SpawnPoint.
This commit is contained in:
parent
1c4b76a078
commit
b0eccf53b5
@ -11608,63 +11608,6 @@ Mesh:
|
||||
offset: 0
|
||||
size: 0
|
||||
path:
|
||||
--- !u!1001 &911870924
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 0}
|
||||
m_Modifications:
|
||||
- target: {fileID: -8679921383154817045, guid: b5e8b9c441024a5488ac81ee138cb2d0, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: -2.7960749
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: b5e8b9c441024a5488ac81ee138cb2d0, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 0.0000019073486
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: b5e8b9c441024a5488ac81ee138cb2d0, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: b5e8b9c441024a5488ac81ee138cb2d0, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: b5e8b9c441024a5488ac81ee138cb2d0, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: b5e8b9c441024a5488ac81ee138cb2d0, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: b5e8b9c441024a5488ac81ee138cb2d0, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: b5e8b9c441024a5488ac81ee138cb2d0, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: b5e8b9c441024a5488ac81ee138cb2d0, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: b5e8b9c441024a5488ac81ee138cb2d0, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 919132149155446097, guid: b5e8b9c441024a5488ac81ee138cb2d0, type: 3}
|
||||
propertyPath: m_Name
|
||||
value: SpeedFireModels
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: b5e8b9c441024a5488ac81ee138cb2d0, type: 3}
|
||||
--- !u!1 &955913176
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -14309,6 +14252,52 @@ Transform:
|
||||
m_Children: []
|
||||
m_Father: {fileID: 291306114}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &1108456493
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1108456495}
|
||||
- component: {fileID: 1108456494}
|
||||
m_Layer: 0
|
||||
m_Name: NetworkSpawnPos (1)
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!114 &1108456494
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1108456493}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: cee2c0113dc15964db87a29bb399e791, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_SpawnPoints:
|
||||
- {fileID: 1108456493}
|
||||
--- !u!4 &1108456495
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1108456493}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: -3, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &1119466313
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -22764,6 +22753,52 @@ Mesh:
|
||||
offset: 0
|
||||
size: 0
|
||||
path:
|
||||
--- !u!1 &1528084438
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1528084439}
|
||||
- component: {fileID: 1528084440}
|
||||
m_Layer: 0
|
||||
m_Name: NetworkSpawnPos
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &1528084439
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1528084438}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: -1, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &1528084440
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1528084438}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: cee2c0113dc15964db87a29bb399e791, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_SpawnPoints:
|
||||
- {fileID: 1528084438}
|
||||
--- !u!1 &1530074703
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -28450,63 +28485,6 @@ Mesh:
|
||||
offset: 0
|
||||
size: 0
|
||||
path:
|
||||
--- !u!1001 &1740863921
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 0}
|
||||
m_Modifications:
|
||||
- target: {fileID: -8679921383154817045, guid: 68f975ad13142f649bdb7d103d57f656, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: -1.3960747
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: 68f975ad13142f649bdb7d103d57f656, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 0.00000047683716
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: 68f975ad13142f649bdb7d103d57f656, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: 68f975ad13142f649bdb7d103d57f656, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: 68f975ad13142f649bdb7d103d57f656, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: 68f975ad13142f649bdb7d103d57f656, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: 68f975ad13142f649bdb7d103d57f656, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: 68f975ad13142f649bdb7d103d57f656, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: 68f975ad13142f649bdb7d103d57f656, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: 68f975ad13142f649bdb7d103d57f656, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 919132149155446097, guid: 68f975ad13142f649bdb7d103d57f656, type: 3}
|
||||
propertyPath: m_Name
|
||||
value: RobotTestModel
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: 68f975ad13142f649bdb7d103d57f656, type: 3}
|
||||
--- !u!1 &1761487665
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -36292,6 +36270,6 @@ SceneRoots:
|
||||
- {fileID: 1316630045}
|
||||
- {fileID: 308004456}
|
||||
- {fileID: 901735154}
|
||||
- {fileID: 911870924}
|
||||
- {fileID: 1740863921}
|
||||
- {fileID: 419097832}
|
||||
- {fileID: 1528084439}
|
||||
- {fileID: 1108456495}
|
||||
|
@ -48,9 +48,17 @@ public class Trooper : RobotController
|
||||
}
|
||||
|
||||
// Networking Staff - Spawn & Despawn
|
||||
void OnServerSpawnPlayer()
|
||||
{
|
||||
// this is done server side, so we have a single source of truth for our spawn point list
|
||||
var spawnPoint = ServerPlayerSpawnPoints.Instance.ConsumeNextSpawnPoint();
|
||||
var spawnPosition = spawnPoint ? spawnPoint.transform.position : Vector3.zero;
|
||||
transform.position = spawnPosition;
|
||||
}
|
||||
|
||||
public override void OnNetworkSpawn()
|
||||
{
|
||||
OnServerSpawnPlayer();
|
||||
base.OnNetworkSpawn();
|
||||
|
||||
playerInput.enabled = IsOwner;
|
||||
|
40
Assets/Scripts/Runtime/Networking/ServerPlayerSpawnPoints.cs
Normal file
40
Assets/Scripts/Runtime/Networking/ServerPlayerSpawnPoints.cs
Normal file
@ -0,0 +1,40 @@
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class ServerPlayerSpawnPoints : MonoBehaviour
|
||||
{
|
||||
[SerializeField]
|
||||
List<GameObject> m_SpawnPoints;
|
||||
|
||||
static ServerPlayerSpawnPoints s_Instance;
|
||||
|
||||
public static ServerPlayerSpawnPoints Instance
|
||||
{
|
||||
get
|
||||
{
|
||||
if (s_Instance == null)
|
||||
{
|
||||
s_Instance = FindObjectOfType<ServerPlayerSpawnPoints>();
|
||||
}
|
||||
|
||||
return s_Instance;
|
||||
}
|
||||
}
|
||||
|
||||
void OnDestroy()
|
||||
{
|
||||
s_Instance = null;
|
||||
}
|
||||
|
||||
public GameObject ConsumeNextSpawnPoint()
|
||||
{
|
||||
if (m_SpawnPoints.Count == 0)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
var toReturn = m_SpawnPoints[m_SpawnPoints.Count - 1];
|
||||
m_SpawnPoints.RemoveAt(m_SpawnPoints.Count - 1);
|
||||
return toReturn;
|
||||
}
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cee2c0113dc15964db87a29bb399e791
|
Loading…
x
Reference in New Issue
Block a user