2 using System
.Collections
.Generic
;
6 public class ParallaxBackground
: MonoBehaviour
8 private Dictionary
<ParallaxBackgroundLayer
.Layer
, Transform
[]> m_layers
= new Dictionary
<ParallaxBackgroundLayer
.Layer
, Transform
[]>();
9 private Dictionary
<ParallaxBackgroundLayer
.Layer
, float> m_speeds
= new Dictionary
<ParallaxBackgroundLayer
.Layer
, float>();
10 private Dictionary
<Transform
, Vector3
> m_offsets
= new Dictionary
<Transform
, Vector3
>();
12 private Transform m_yarn
;
16 m_yarn
= GameObject
.FindGameObjectWithTag("YarnPhysics").transform
;
18 List
<Transform
> children
= new List
<Transform
>();
19 foreach (Transform child
in transform
)
22 m_offsets
.Add(child
, child
.position
- m_yarn
.position
);
25 var layersDefined
= Enum
.GetValues(typeof(ParallaxBackgroundLayer
.Layer
));
26 float speedModifier
= 0.9f
;
27 foreach (ParallaxBackgroundLayer
.Layer layer
in layersDefined
)
29 List
<Transform
> childrenInLayer
= children
.Where(t
=> t
.GetComponent
<ParallaxBackgroundLayer
>().m_layer
== layer
).ToList();
31 m_layers
.Add(layer
, childrenInLayer
.ToArray());
32 m_speeds
.Add(layer
, speedModifier
);
33 speedModifier
/= layersDefined
.Length
;
39 var layersDefined
= Enum
.GetValues(typeof(ParallaxBackgroundLayer
.Layer
));
40 foreach (ParallaxBackgroundLayer
.Layer layer
in layersDefined
)
42 float layerSpeed
= m_speeds
[layer
];
44 foreach (Transform child
in m_layers
[layer
])
46 Vector3 offset
= m_offsets
[child
];
48 child
.position
= new Vector3
50 m_yarn
.position
.x
+ offset
.x
,
51 m_yarn
.position
.y
+ offset
.y
, // temp, while parallax effect is being fixed