1
+ using UnityEngine ;
2
+
3
+ public class DirectionalArrow : MonoBehaviour
4
+ {
5
+ [ SerializeField ] private CameraLogic cameraLogic ;
6
+ [ SerializeField ] private GameObject leftPlayerArrow ;
7
+ [ SerializeField ] private GameObject rightPlayerArrow ;
8
+
9
+ private float wiggleSpeed = 5f ;
10
+ private float wiggleAmount = 50.5f ;
11
+
12
+ private Vector3 leftArrowOriginalPosition ;
13
+ private Vector3 rightArrowOriginalPosition ;
14
+
15
+ private void Start ( )
16
+ {
17
+ leftPlayerArrow . SetActive ( false ) ;
18
+ rightPlayerArrow . SetActive ( false ) ;
19
+
20
+ leftArrowOriginalPosition = leftPlayerArrow . transform . localPosition ;
21
+ rightArrowOriginalPosition = rightPlayerArrow . transform . localPosition ;
22
+ }
23
+
24
+ private void Update ( )
25
+ {
26
+ HandleArrowActivation ( ) ;
27
+ ApplyWiggleEffect ( ) ;
28
+ }
29
+
30
+ private void HandleArrowActivation ( )
31
+ {
32
+ if ( cameraLogic == null ) return ;
33
+
34
+ bool isPlayer1Assigned = cameraLogic . player1 != null ;
35
+ bool isPlayer2Assigned = cameraLogic . player2 != null ;
36
+
37
+ leftPlayerArrow . SetActive ( isPlayer1Assigned && ! isPlayer2Assigned ) ;
38
+ rightPlayerArrow . SetActive ( isPlayer2Assigned && ! isPlayer1Assigned ) ;
39
+
40
+ if ( ! isPlayer1Assigned && ! isPlayer2Assigned )
41
+ {
42
+ leftPlayerArrow . SetActive ( false ) ;
43
+ rightPlayerArrow . SetActive ( false ) ;
44
+ }
45
+ }
46
+
47
+ private void ApplyWiggleEffect ( )
48
+ {
49
+ if ( leftPlayerArrow . activeSelf )
50
+ {
51
+ leftPlayerArrow . transform . localPosition = leftArrowOriginalPosition + new Vector3 ( Mathf . Sin ( Time . time * wiggleSpeed ) * wiggleAmount , 0 , 0 ) ;
52
+ }
53
+
54
+ if ( rightPlayerArrow . activeSelf )
55
+ {
56
+ rightPlayerArrow . transform . localPosition = rightArrowOriginalPosition + new Vector3 ( Mathf . Sin ( Time . time * wiggleSpeed ) * wiggleAmount , 0 , 0 ) ;
57
+ }
58
+ }
59
+ }
0 commit comments