12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- using DG.Tweening;
- using LitJson;
- using System.Collections;
- using UnityEngine;
- namespace SC.XR.Unity {
- [RequireComponent(typeof(SCKeyboardMono))]
- public class SCKeyboardFollower : FollowerBase {
- Vector3 viewPoint = Vector3.zero;
- bool isFollowing = false;
- Vector2 initViewPoint;
- Vector3 startScale;
- float z = 0;
- float y = 0;
- private void Start()
- {
-
- startScale = transform.localScale;
- HttpTool.Instance.Get("https://fat1.qulivr.com/mr-navigator/v1/", "", (string getInterval) => {
- Debug.Log(getInterval);
- if (getInterval == null)
- Debug.LogError(" HttpTool Get Interval Error!!! ");
- JsonData data = JsonMapper.ToObject(getInterval);
- Debug.Log(data["code"]);
- if ((int)data["code"] == 200)
- {
- z = float.Parse(data["defaultKeyboardZaxis"].ToString());
- y = float.Parse(data["defaultKeyboardHeight"].ToString());
- }
- else
- Debug.LogError(" HttpTool Get Interval Error!!! ");
- });
- }
- protected override void OnEnable() {
- base.OnEnable();
- initViewPoint = Camera.main.WorldToViewportPoint(CalculateWindowPosition(Camera.main.transform));
- isFollowing = true;
- StopFollower = false;
- }
- private void Update()
- {
- if(transform.eulerAngles.y!=0)
- {
- transform.eulerAngles = new Vector3(transform.eulerAngles.x, 0, 0);
- }
- if(transform.eulerAngles.x>5)
- {
- transform.eulerAngles = new Vector3(5, 0, 0);
- }
- else if(transform.eulerAngles.x<-5)
- {
- transform.eulerAngles = new Vector3(-5, 0, 0);
- }
-
- transform.localScale = startScale * 1.5f;
-
- }
- protected override void Follow() {
- if (Camera.main == null || Camera.main.transform == null)
- return;
-
- viewPoint = Camera.main.WorldToViewportPoint(transform.position);
- if (viewPoint.x < (initViewPoint.x - 1f) || viewPoint.y < (initViewPoint.y - 0.5f) || viewPoint.x > (initViewPoint.x + 1f) || viewPoint.y > (initViewPoint.y + 1f) || Vector3.Magnitude(Camera.main.transform.position - transform.position) > (WindowDistance+0.1f)) {
- isFollowing = true;
- } else if (Mathf.Abs(viewPoint.x - initViewPoint.x) < 0.03f && Mathf.Abs(viewPoint.y - initViewPoint.y) < 0.03f) {
- isFollowing = false;
- StopFollower = true;
- }
- if (Mathf.Abs(Vector3.Distance(transform.position, CalculateWindowPosition(Camera.main.transform) + new Vector3(0, y, z))) < 0.1f)
- isFollowing = false;
- if (isFollowing) {
- transform.position = Vector3.Lerp(transform.position, CalculateWindowPosition(Camera.main.transform)+new Vector3(0,y,z), WindowFollowSpeed * Time.deltaTime);
- transform.rotation = Quaternion.Slerp(transform.rotation, CalculateWindowRotation(Camera.main.transform), WindowFollowSpeed * Time.deltaTime);
- }
- }
- }
- }
|