Skip to content

Commit 7d5729b

Browse files
restructuring of detonate message & RPC response
1 parent a3236ae commit 7d5729b

File tree

6 files changed

+90
-22
lines changed

6 files changed

+90
-22
lines changed

Assets/Prefabs/Game/ImpTossAttack.prefab

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,9 +94,11 @@ GameObject:
9494
- component: {fileID: 5473352307376472483}
9595
- component: {fileID: 5473352307376472480}
9696
- component: {fileID: 4016230363033547097}
97+
- component: {fileID: 2473823525057555519}
9798
- component: {fileID: 3757530492134123977}
9899
- component: {fileID: 6563030650317158872}
99100
- component: {fileID: 6687170048049847228}
101+
- component: {fileID: 646432022378958216}
100102
- component: {fileID: 5792943200133235216}
101103
m_Layer: 0
102104
m_Name: ImpTossAttack
@@ -154,6 +156,19 @@ Rigidbody:
154156
m_Interpolate: 0
155157
m_Constraints: 0
156158
m_CollisionDetection: 0
159+
--- !u!135 &2473823525057555519
160+
SphereCollider:
161+
m_ObjectHideFlags: 0
162+
m_CorrespondingSourceObject: {fileID: 0}
163+
m_PrefabInstance: {fileID: 0}
164+
m_PrefabAsset: {fileID: 0}
165+
m_GameObject: {fileID: 5473352307376472481}
166+
m_Material: {fileID: 13400000, guid: 89c3353bce9e81340bee4236c92eb0d8, type: 2}
167+
m_IsTrigger: 0
168+
m_Enabled: 1
169+
serializedVersion: 2
170+
m_Radius: 0.56
171+
m_Center: {x: 0, y: 0, z: 0}
157172
--- !u!114 &3757530492134123977
158173
MonoBehaviour:
159174
m_ObjectHideFlags: 0
@@ -211,6 +226,36 @@ MonoBehaviour:
211226
m_LayerMask:
212227
serializedVersion: 2
213228
m_Bits: 72
229+
detonateAfterSeconds: 5
230+
detonatedRpcCallback:
231+
m_PersistentCalls:
232+
m_Calls:
233+
- m_Target: {fileID: 646432022378958216}
234+
m_TargetAssemblyTypeName: Unity.Multiplayer.Samples.BossRoom.Client.PrefabSpawner,
235+
Unity.BossRoom.Gameplay
236+
m_MethodName: Spawn
237+
m_Mode: 1
238+
m_Arguments:
239+
m_ObjectArgument: {fileID: 0}
240+
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
241+
m_IntArgument: 0
242+
m_FloatArgument: 0
243+
m_StringArgument:
244+
m_BoolArgument: 0
245+
m_CallState: 2
246+
--- !u!114 &646432022378958216
247+
MonoBehaviour:
248+
m_ObjectHideFlags: 0
249+
m_CorrespondingSourceObject: {fileID: 0}
250+
m_PrefabInstance: {fileID: 0}
251+
m_PrefabAsset: {fileID: 0}
252+
m_GameObject: {fileID: 5473352307376472481}
253+
m_Enabled: 1
254+
m_EditorHideFlags: 0
255+
m_Script: {fileID: 11500000, guid: 5e816ae7f08713f44b144bb413e3e677, type: 3}
256+
m_Name:
257+
m_EditorClassIdentifier:
258+
m_Prefab: {fileID: 2518139487072021748, guid: 1b242eb1e81644e5e8c528509ba78cb4, type: 3}
214259
--- !u!114 &5792943200133235216
215260
MonoBehaviour:
216261
m_ObjectHideFlags: 0

Assets/Prefabs/Game/ImpTossAttackGraphics.prefab

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ GameObject:
1111
- component: {fileID: 5798640841212797410}
1212
- component: {fileID: 1929004020738845844}
1313
- component: {fileID: 6578595960882027409}
14-
- component: {fileID: 6074465214437177532}
1514
m_Layer: 0
1615
m_Name: ImpTossAttackGraphics
1716
m_TagString: Untagged
@@ -84,16 +83,3 @@ MeshRenderer:
8483
m_SortingLayer: 0
8584
m_SortingOrder: 0
8685
m_AdditionalVertexStreams: {fileID: 0}
87-
--- !u!135 &6074465214437177532
88-
SphereCollider:
89-
m_ObjectHideFlags: 0
90-
m_CorrespondingSourceObject: {fileID: 0}
91-
m_PrefabInstance: {fileID: 0}
92-
m_PrefabAsset: {fileID: 0}
93-
m_GameObject: {fileID: 8381232259107055460}
94-
m_Material: {fileID: 13400000, guid: 89c3353bce9e81340bee4236c92eb0d8, type: 2}
95-
m_IsTrigger: 0
96-
m_Enabled: 1
97-
serializedVersion: 2
98-
m_Radius: 0.56
99-
m_Center: {x: 0, y: 0, z: 0}

Assets/Prefabs/NetworkingManager.prefab

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,11 @@ MonoBehaviour:
162162
SourcePrefabToOverride: {fileID: 0}
163163
SourceHashToOverride: 0
164164
OverridingTargetPrefab: {fileID: 0}
165+
- Override: 0
166+
Prefab: {fileID: 5473352307376472481, guid: 3e5c32e5766633a4eaf9e7c393418b34, type: 3}
167+
SourcePrefabToOverride: {fileID: 0}
168+
SourceHashToOverride: 0
169+
OverridingTargetPrefab: {fileID: 0}
165170
TickRate: 30
166171
ClientConnectionBufferTimeout: 1
167172
ConnectionApproval: 1
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
using UnityEngine;
2+
3+
namespace Unity.Multiplayer.Samples.BossRoom.Client
4+
{
5+
public class PrefabSpawner : MonoBehaviour
6+
{
7+
[SerializeField]
8+
GameObject m_Prefab;
9+
10+
public void Spawn()
11+
{
12+
Instantiate(m_Prefab, transform.position, transform.rotation);
13+
}
14+
}
15+
}

Assets/Scripts/Gameplay/GameplayObjects/PrefabSpawner.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/Scripts/Gameplay/GameplayObjects/ServerTossAttack.cs

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using Unity.Netcode;
22
using UnityEngine;
3+
using UnityEngine.Events;
34

45
namespace Unity.Multiplayer.Samples.BossRoom.Server
56
{
@@ -23,20 +24,20 @@ public class ServerTossAttack : NetworkBehaviour
2324
bool m_Started;
2425

2526
const int k_MaxCollisions = 16;
27+
2628
Collider[] m_CollisionCache = new Collider[k_MaxCollisions];
2729

2830
[SerializeField]
2931
float detonateAfterSeconds = 5f;
3032

3133
float m_DetonateAfterSeconds;
3234

33-
[SerializeField]
34-
float destroyAfterSeconds = 5.5f;
35-
3635
float m_DestroyAfterSeconds;
3736

3837
bool m_Detonated;
3938

39+
public UnityEvent detonatedRpcCallback;
40+
4041
public override void OnNetworkSpawn()
4142
{
4243
if (!IsServer)
@@ -49,7 +50,6 @@ public override void OnNetworkSpawn()
4950
m_Detonated = false;
5051

5152
m_DetonateAfterSeconds = Time.fixedTime + detonateAfterSeconds;
52-
m_DestroyAfterSeconds = Time.fixedTime + destroyAfterSeconds;
5353
}
5454

5555
public override void OnNetworkDespawn()
@@ -76,9 +76,18 @@ void Detonate()
7676
}
7777
}
7878

79+
// send client RPC to detonate on clients
80+
DetonateClientRpc();
81+
7982
m_Detonated = true;
8083
}
8184

85+
[ClientRpc]
86+
void DetonateClientRpc()
87+
{
88+
detonatedRpcCallback?.Invoke();
89+
}
90+
8291
void FixedUpdate()
8392
{
8493
if (!m_Started)
@@ -89,11 +98,8 @@ void FixedUpdate()
8998
if (!m_Detonated && m_DetonateAfterSeconds < Time.fixedTime)
9099
{
91100
Detonate();
92-
}
93101

94-
if (m_DestroyAfterSeconds < Time.fixedTime)
95-
{
96-
// Time to return to the pool from whence it came.
102+
// despawn after sending detonate RPC
97103
var networkObject = gameObject.GetComponent<NetworkObject>();
98104
networkObject.Despawn();
99105
}

0 commit comments

Comments
 (0)