blob: 4381e2cc3ac7e0fc0696a0f18ce135363da9f67b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
using UnityEngine;
namespace Camera
{
public class BindCameraHeightToShader : MonoBehaviour
{
public float layerHeight = 5;
private static readonly int PlayerHeight = Shader.PropertyToID("_PlayerHeight");
private static readonly int LayerHeight = Shader.PropertyToID("_LayerHeight");
private float scaleAverage
{
get
{
var t = transform;
var scale = t.localScale;
var average = (scale.x + scale.y + scale.z) / 3;
return average;
}
}
private void FixedUpdate()
{
Shader.SetGlobalFloat(PlayerHeight, transform.position.y);
Shader.SetGlobalFloat(LayerHeight, layerHeight);
}
private void OnDrawGizmos()
{
var t = transform;
var average = this.scaleAverage;
Gizmos.color = Color.yellow;
Gizmos.DrawWireCube(
t.position,
new Vector3(2f, 0.2f, 2f) * average
);
}
private void OnDrawGizmosSelected()
{
var t = transform;
var average = this.scaleAverage;
Gizmos.color = Color.green;
Gizmos.DrawWireCube(
t.position + Vector3.up * (layerHeight / 2),
(new Vector3(2.2f, 0f, 2.2f) * average) +
Vector3.up * layerHeight
);
}
}
}
|