Skip to content

Commit afd1dae

Browse files
Fix: Refactor of click target feedback (#569) (#570)
* Refactor of how the click target feedback works--no longer a particle system to fix the red dot issue, has a nice little animation and some position lerping to make it follow the player's cursor nicely * Minor change to simplify code a bit (cherry picked from commit 107af0f)
1 parent 8341822 commit afd1dae

12 files changed

+179
-91
lines changed
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
%YAML 1.1
2+
%TAG !u! tag:unity3d.com,2011:
3+
--- !u!1107 &-3408950728626638424
4+
AnimatorStateMachine:
5+
serializedVersion: 6
6+
m_ObjectHideFlags: 1
7+
m_CorrespondingSourceObject: {fileID: 0}
8+
m_PrefabInstance: {fileID: 0}
9+
m_PrefabAsset: {fileID: 0}
10+
m_Name: Base Layer
11+
m_ChildStates:
12+
- serializedVersion: 1
13+
m_State: {fileID: 8953144010422057453}
14+
m_Position: {x: 210, y: 10, z: 0}
15+
m_ChildStateMachines: []
16+
m_AnyStateTransitions: []
17+
m_EntryTransitions: []
18+
m_StateMachineTransitions: {}
19+
m_StateMachineBehaviours: []
20+
m_AnyStatePosition: {x: 50, y: 20, z: 0}
21+
m_EntryPosition: {x: 50, y: 120, z: 0}
22+
m_ExitPosition: {x: 800, y: 120, z: 0}
23+
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
24+
m_DefaultState: {fileID: 8953144010422057453}
25+
--- !u!91 &9100000
26+
AnimatorController:
27+
m_ObjectHideFlags: 0
28+
m_CorrespondingSourceObject: {fileID: 0}
29+
m_PrefabInstance: {fileID: 0}
30+
m_PrefabAsset: {fileID: 0}
31+
m_Name: ClickFeedbackController
32+
serializedVersion: 5
33+
m_AnimatorParameters: []
34+
m_AnimatorLayers:
35+
- serializedVersion: 5
36+
m_Name: Base Layer
37+
m_StateMachine: {fileID: -3408950728626638424}
38+
m_Mask: {fileID: 0}
39+
m_Motions: []
40+
m_Behaviours: []
41+
m_BlendingMode: 0
42+
m_SyncedLayerIndex: -1
43+
m_DefaultWeight: 0
44+
m_IKPass: 0
45+
m_SyncedLayerAffectsTiming: 0
46+
m_Controller: {fileID: 9100000}
47+
--- !u!1102 &8953144010422057453
48+
AnimatorState:
49+
serializedVersion: 6
50+
m_ObjectHideFlags: 1
51+
m_CorrespondingSourceObject: {fileID: 0}
52+
m_PrefabInstance: {fileID: 0}
53+
m_PrefabAsset: {fileID: 0}
54+
m_Name: UI_GroundClick
55+
m_Speed: 1
56+
m_CycleOffset: 0
57+
m_Transitions: []
58+
m_StateMachineBehaviours: []
59+
m_Position: {x: 50, y: 50, z: 0}
60+
m_IKOnFeet: 0
61+
m_WriteDefaultValues: 1
62+
m_Mirror: 0
63+
m_SpeedParameterActive: 0
64+
m_MirrorParameterActive: 0
65+
m_CycleOffsetParameterActive: 0
66+
m_TimeParameterActive: 0
67+
m_Motion: {fileID: 7400000, guid: afc67a48ae8dfea4793e330e10545ddc, type: 2}
68+
m_Tag:
69+
m_SpeedParameter:
70+
m_MirrorParameter:
71+
m_CycleOffsetParameter:
72+
m_TimeParameter:

Assets/BossRoom/Models/ClickFeedbackController.controller.meta

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:20225d855c2b5c5457fcfb2a6eb7cbecffdb5b5f0696f3aaebe218f7e8d88ec2
3+
size 5249

Assets/BossRoom/Models/UI_GroundClick.anim.meta

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

Assets/BossRoom/Prefabs/Character/PlayerAvatar.prefab

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,6 @@ MonoBehaviour:
6565
m_Name:
6666
m_EditorClassIdentifier:
6767
m_Animator: {fileID: 1829276847453002016}
68-
m_ParameterSendBits: 0
69-
m_SendRate: 0.1
7068
--- !u!114 &7209204667172237188
7169
MonoBehaviour:
7270
m_ObjectHideFlags: 0
@@ -307,7 +305,6 @@ MonoBehaviour:
307305
m_Script: {fileID: 11500000, guid: e363085af981a41fd816ab952a0a07c7, type: 3}
308306
m_Name:
309307
m_EditorClassIdentifier:
310-
m_PingIntervalSeconds: 0.1
311308
--- !u!114 &4354133789489545025
312309
MonoBehaviour:
313310
m_ObjectHideFlags: 0
@@ -333,6 +330,7 @@ MonoBehaviour:
333330
m_Script: {fileID: 11500000, guid: 331c67f15523ad7419792662b9768f44, type: 3}
334331
m_Name:
335332
m_EditorClassIdentifier:
333+
moveRate: 0.05
336334
m_CharacterClassContainer: {fileID: 5230418375993597025}
337335
m_PhysicsWrapper: {fileID: 6116655102486013040}
338336
--- !u!114 &5043718152237111612

Assets/BossRoom/Prefabs/Click_Feedback.prefab

Lines changed: 35 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,9 @@ GameObject:
1111
- component: {fileID: 2500332623759108304}
1212
- component: {fileID: 6101625250476277925}
1313
- component: {fileID: 6375111725193425194}
14-
- component: {fileID: 7164482062141736850}
1514
- component: {fileID: 5754560017040867806}
15+
- component: {fileID: 8568434976788884338}
16+
- component: {fileID: 7961553494364404633}
1617
m_Layer: 0
1718
m_Name: Click_Feedback
1819
m_TagString: Untagged
@@ -29,9 +30,8 @@ Transform:
2930
m_GameObject: {fileID: 9137928905311479176}
3031
m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068}
3132
m_LocalPosition: {x: 0, y: 0, z: 0}
32-
m_LocalScale: {x: 1, y: 1, z: 1}
33-
m_Children:
34-
- {fileID: 2816127936030266596}
33+
m_LocalScale: {x: 2.713, y: 2.713, z: 2.713}
34+
m_Children: []
3535
m_Father: {fileID: 0}
3636
m_RootOrder: 0
3737
m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
@@ -50,7 +50,7 @@ MeshRenderer:
5050
m_PrefabInstance: {fileID: 0}
5151
m_PrefabAsset: {fileID: 0}
5252
m_GameObject: {fileID: 9137928905311479176}
53-
m_Enabled: 0
53+
m_Enabled: 1
5454
m_CastShadows: 1
5555
m_ReceiveShadows: 1
5656
m_DynamicOccludee: 1
@@ -62,7 +62,7 @@ MeshRenderer:
6262
m_RenderingLayerMask: 1
6363
m_RendererPriority: 0
6464
m_Materials:
65-
- {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
65+
- {fileID: 2100000, guid: bfad40b971740ef4381f47a69fd3348d, type: 2}
6666
m_StaticBatchInfo:
6767
firstSubMesh: 0
6868
subMeshCount: 0
@@ -84,21 +84,39 @@ MeshRenderer:
8484
m_SortingLayer: 0
8585
m_SortingOrder: 0
8686
m_AdditionalVertexStreams: {fileID: 0}
87-
--- !u!64 &7164482062141736850
88-
MeshCollider:
87+
--- !u!114 &5754560017040867806
88+
MonoBehaviour:
8989
m_ObjectHideFlags: 0
9090
m_CorrespondingSourceObject: {fileID: 0}
9191
m_PrefabInstance: {fileID: 0}
9292
m_PrefabAsset: {fileID: 0}
9393
m_GameObject: {fileID: 9137928905311479176}
94-
m_Material: {fileID: 0}
95-
m_IsTrigger: 0
9694
m_Enabled: 1
97-
serializedVersion: 4
98-
m_Convex: 0
99-
m_CookingOptions: 30
100-
m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
101-
--- !u!114 &5754560017040867806
95+
m_EditorHideFlags: 0
96+
m_Script: {fileID: 11500000, guid: b853e11fb193c8149bd7d25b17c0ddc6, type: 3}
97+
m_Name:
98+
m_EditorClassIdentifier:
99+
m_DisabledDelay: 0.75
100+
--- !u!95 &8568434976788884338
101+
Animator:
102+
serializedVersion: 3
103+
m_ObjectHideFlags: 0
104+
m_CorrespondingSourceObject: {fileID: 0}
105+
m_PrefabInstance: {fileID: 0}
106+
m_PrefabAsset: {fileID: 0}
107+
m_GameObject: {fileID: 9137928905311479176}
108+
m_Enabled: 1
109+
m_Avatar: {fileID: 0}
110+
m_Controller: {fileID: 9100000, guid: 11646ef5453865d459c8ec37484dbdf3, type: 2}
111+
m_CullingMode: 0
112+
m_UpdateMode: 0
113+
m_ApplyRootMotion: 0
114+
m_LinearVelocityBlending: 0
115+
m_WarningMessage:
116+
m_HasTransformHierarchy: 1
117+
m_AllowConstantClipSamplingOptimization: 1
118+
m_KeepAnimatorControllerStateOnDisable: 0
119+
--- !u!114 &7961553494364404633
102120
MonoBehaviour:
103121
m_ObjectHideFlags: 0
104122
m_CorrespondingSourceObject: {fileID: 0}
@@ -107,69 +125,7 @@ MonoBehaviour:
107125
m_GameObject: {fileID: 9137928905311479176}
108126
m_Enabled: 1
109127
m_EditorHideFlags: 0
110-
m_Script: {fileID: 11500000, guid: b853e11fb193c8149bd7d25b17c0ddc6, type: 3}
128+
m_Script: {fileID: 11500000, guid: 598271baef5b1d843990b429b974205f, type: 3}
111129
m_Name:
112130
m_EditorClassIdentifier:
113-
m_DisabledDelay: 0.75
114-
--- !u!1001 &5569208290851949093
115-
PrefabInstance:
116-
m_ObjectHideFlags: 0
117-
serializedVersion: 2
118-
m_Modification:
119-
m_TransformParent: {fileID: 2500332623759108304}
120-
m_Modifications:
121-
- target: {fileID: 6957808770263120477, guid: 7c2bd7eca3b96084f99aa3a945102b11, type: 3}
122-
propertyPath: m_Name
123-
value: GroundClickFX
124-
objectReference: {fileID: 0}
125-
- target: {fileID: 7664326125434658497, guid: 7c2bd7eca3b96084f99aa3a945102b11, type: 3}
126-
propertyPath: m_RootOrder
127-
value: 0
128-
objectReference: {fileID: 0}
129-
- target: {fileID: 7664326125434658497, guid: 7c2bd7eca3b96084f99aa3a945102b11, type: 3}
130-
propertyPath: m_LocalPosition.x
131-
value: 0
132-
objectReference: {fileID: 0}
133-
- target: {fileID: 7664326125434658497, guid: 7c2bd7eca3b96084f99aa3a945102b11, type: 3}
134-
propertyPath: m_LocalPosition.y
135-
value: 0
136-
objectReference: {fileID: 0}
137-
- target: {fileID: 7664326125434658497, guid: 7c2bd7eca3b96084f99aa3a945102b11, type: 3}
138-
propertyPath: m_LocalPosition.z
139-
value: 0
140-
objectReference: {fileID: 0}
141-
- target: {fileID: 7664326125434658497, guid: 7c2bd7eca3b96084f99aa3a945102b11, type: 3}
142-
propertyPath: m_LocalRotation.w
143-
value: 1
144-
objectReference: {fileID: 0}
145-
- target: {fileID: 7664326125434658497, guid: 7c2bd7eca3b96084f99aa3a945102b11, type: 3}
146-
propertyPath: m_LocalRotation.x
147-
value: 0
148-
objectReference: {fileID: 0}
149-
- target: {fileID: 7664326125434658497, guid: 7c2bd7eca3b96084f99aa3a945102b11, type: 3}
150-
propertyPath: m_LocalRotation.y
151-
value: 0
152-
objectReference: {fileID: 0}
153-
- target: {fileID: 7664326125434658497, guid: 7c2bd7eca3b96084f99aa3a945102b11, type: 3}
154-
propertyPath: m_LocalRotation.z
155-
value: 0
156-
objectReference: {fileID: 0}
157-
- target: {fileID: 7664326125434658497, guid: 7c2bd7eca3b96084f99aa3a945102b11, type: 3}
158-
propertyPath: m_LocalEulerAnglesHint.x
159-
value: 0
160-
objectReference: {fileID: 0}
161-
- target: {fileID: 7664326125434658497, guid: 7c2bd7eca3b96084f99aa3a945102b11, type: 3}
162-
propertyPath: m_LocalEulerAnglesHint.y
163-
value: 0
164-
objectReference: {fileID: 0}
165-
- target: {fileID: 7664326125434658497, guid: 7c2bd7eca3b96084f99aa3a945102b11, type: 3}
166-
propertyPath: m_LocalEulerAnglesHint.z
167-
value: 0
168-
objectReference: {fileID: 0}
169-
m_RemovedComponents: []
170-
m_SourcePrefab: {fileID: 100100000, guid: 7c2bd7eca3b96084f99aa3a945102b11, type: 3}
171-
--- !u!4 &2816127936030266596 stripped
172-
Transform:
173-
m_CorrespondingSourceObject: {fileID: 7664326125434658497, guid: 7c2bd7eca3b96084f99aa3a945102b11, type: 3}
174-
m_PrefabInstance: {fileID: 5569208290851949093}
175-
m_PrefabAsset: {fileID: 0}
131+
lerpSpeed: 0.03

Assets/BossRoom/Scripts/Client/ClientClickFeedback.cs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,9 @@ public class ClientClickFeedback : NetworkBehaviour
1515
GameObject m_FeedbackObj;
1616

1717
ClientInputSender m_ClientSender;
18+
19+
ClickFeedbackLerper m_ClickFeedbackLerper;
1820

19-
const float k_HoverHeight = 0.15f;
2021

2122
void Start()
2223
{
@@ -30,15 +31,13 @@ void Start()
3031
m_ClientSender.ClientMoveEvent += OnClientMove;
3132
m_FeedbackObj = Instantiate(m_FeedbackPrefab);
3233
m_FeedbackObj.SetActive(false);
34+
m_ClickFeedbackLerper = m_FeedbackObj.GetComponent<ClickFeedbackLerper>();
3335
}
3436

3537
void OnClientMove(Vector3 position)
3638
{
37-
position.y += k_HoverHeight;
38-
39-
m_FeedbackObj.transform.position = position;
4039
m_FeedbackObj.SetActive(true);
41-
40+
m_ClickFeedbackLerper.SetTarget(position);
4241
}
4342

4443
public override void OnDestroy()
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
using Unity.Multiplayer.Samples.BossRoom.Visual;
2+
using UnityEngine;
3+
4+
namespace Unity.Multiplayer.Samples.BossRoom.Client
5+
{
6+
public class ClickFeedbackLerper : MonoBehaviour
7+
{
8+
PositionLerper m_PositionLerper;
9+
10+
Vector3 m_TargetPosition;
11+
12+
// The amount of offset to keep the click feedback object from intersecting with the floor
13+
const float k_HoverHeight = 0.15f;
14+
const float k_LerpTime = 0.04f;
15+
16+
void Start()
17+
{
18+
m_PositionLerper = new PositionLerper(Vector3.zero, k_LerpTime);
19+
}
20+
21+
void Update()
22+
{
23+
transform.position = m_PositionLerper.LerpPosition(transform.position, m_TargetPosition);
24+
}
25+
26+
public void SetTarget(Vector3 clientInputPosition)
27+
{
28+
m_TargetPosition.x = clientInputPosition.x;
29+
m_TargetPosition.y = k_HoverHeight;
30+
m_TargetPosition.z = clientInputPosition.z;
31+
}
32+
}
33+
}

Assets/BossRoom/Scripts/Client/Game/Character/ClickFeedbackLerper.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/BossRoom/Scripts/Client/Game/Character/ClientInputSender.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ public class ClientInputSender : NetworkBehaviour
1414
{
1515
private const float k_MouseInputRaycastDistance = 100f;
1616

17-
//The movement input rate is capped at 50ms (or 20 fps). This provides a nice balance between responsiveness and
17+
//The movement input rate is capped at 40ms (or 25 fps). This provides a nice balance between responsiveness and
1818
//upstream network conservation. This matters when holding down your mouse button to move.
19-
private const float k_MoveSendRateSeconds = 0.05f; //20 fps.
19+
private const float k_MoveSendRateSeconds = 0.04f; //25 fps.
2020

2121

2222
private const float k_TargetMoveTimeout = 0.45f; //prevent moves for this long after targeting someone (helps prevent walking to the guy you clicked).

Assets/BossRoom/VFX/Materials/GroundClick.mat

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ Material:
128128
- _ColorMask: 15
129129
- _ColorMode: 3
130130
- _Cull: 2
131-
- _Cutoff: 0.5
131+
- _Cutoff: 0.123
132132
- _DetailNormalMapScale: 1
133133
- _DiffuseAmount: 0.2
134134
- _DistortionBlend: 0.5

Assets/BossRoom/VFX/Prefabs/UI/fx_GroundClickFX.prefab

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4792,7 +4792,7 @@ ParticleSystemRenderer:
47924792
m_RenderAlignment: 1
47934793
m_Pivot: {x: 0, y: 0, z: 0}
47944794
m_Flip: {x: 0, y: 0, z: 0}
4795-
m_UseCustomVertexStreams: 1
4795+
m_UseCustomVertexStreams: 0
47964796
m_EnableGPUInstancing: 1
47974797
m_ApplyActiveColorSpace: 1
47984798
m_AllowRoll: 1

0 commit comments

Comments
 (0)