1using System.Collections;
9 Vector3 PlayerPosition =
new Vector3();
10 Vector3 PlayerPositionForward =
new Vector3();
11 Vector3 moveForward=
new Vector3();
12 Vector3 targetPosition =
new Vector3();
13 private GameObject targetObject;
17 bool needToFollow =
false;
18 bool isRunning =
false;
37 targetPosition = EndPosition;
40 StartCoroutine(MakeGuideLine(EndPosition));
41 targetObject = TargetObject;
48 PlayerPosition =
new Vector3(
Player.transform.position.x,
Player.transform.position.y - 0.15f,
Player.transform.position.z);
50 var move = PlayerPosition +
Player.transform.forward * (Vector3.Distance(PlayerPosition, targetPosition) * 0.6f);
51 if (targetObject !=
null)
53 if (isInFieldOfView(targetObject))
55 moveForward =
new Vector3(move.x, move.y , move.z);
59 moveForward =
new Vector3(move.x, move.y + 0.45f, move.z);
63 if ((
Vector3.Distance(PlayerPosition, targetPosition) >= 0.9f) && needToFollow && !isRunning)
66 StartCoroutine(MakeGuideLine(targetPosition));
70 IEnumerator MakeGuideLine(Vector3 EndPosition)
77 while (
Vector3.Distance(PlayerPosition, EndPosition) >= 0.9f)
80 time += Time.deltaTime;
89 particleSystem.transform.position = CalculateLinearBeziearPoint(time / duration, PlayerPosition, moveForward, EndPosition);
98 Vector3 CalculateLinearBeziearPoint(
float t, Vector3 p0, Vector3 p1, Vector3 p2)
104 Vector3 p = uu * p0 + 2 * u * t * p1 + tt * p2;
122 private bool isInFieldOfView(GameObject interactedGO)
124 Vector3 screenPoint =
VRCamera.WorldToViewportPoint(interactedGO.transform.position);
125 bool onScreen = screenPoint.z > 0 && screenPoint.x > 0 && screenPoint.x < 1 && screenPoint.y > 0 && screenPoint.y < 1;
void TurnOnOffGuide(bool newValue)
void StartFollowing(Vector3 EndPosition, GameObject TargetObject)
GameObject particleSystem