blob: 194f947365ff7787caadf4279cf7f5f7bb51b05a (
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
54
55
56
57
|
using UnityEngine;
public class FollowLocalPos : MonoBehaviour
{
private Vector3 relative;
private Vector3 relativeForward;
private Vector3 relativeUp;
public Transform target;
public Player targetPlayer;
private void Start()
{
if ((bool)target && relative == Vector3.zero)
{
Follow(target);
}
}
private void LateUpdate()
{
if ((bool)target && target.gameObject.activeInHierarchy)
{
base.transform.position = target.TransformPoint(relative);
base.transform.rotation = Quaternion.LookRotation(target.TransformDirection(relativeForward), target.TransformDirection(relativeUp));
}
else
{
Object.Destroy(base.gameObject);
}
}
public void Follow(Transform targetTransform)
{
if ((bool)targetTransform)
{
target = targetTransform;
Player component = target.transform.root.GetComponent<Player>();
Vector3 position = base.transform.position;
if ((bool)component)
{
targetPlayer = component;
base.transform.position -= base.transform.forward * 2f;
Vector3 position2 = target.position;
Vector3 vector = (base.transform.position - target.position).normalized * 1.1f;
position = position2 + vector;
base.transform.position = new Vector3(base.transform.position.x, base.transform.position.y, component.transform.position.z);
}
relative = targetTransform.InverseTransformPoint(position);
relativeForward = targetTransform.InverseTransformDirection(base.transform.forward);
relativeUp = targetTransform.InverseTransformDirection(base.transform.up);
}
}
}
|