2 using System.Collections;
6 public enum TeleportType
8 TeleportTypeUseTerrain,
9 TeleportTypeUseCollider,
13 public bool teleportOnClick =
false;
14 public TeleportType teleportType = TeleportType.TeleportTypeUseZeroY;
20 var top = SteamVR_Render.Top();
21 return (top != null) ? top.origin : null;
27 var trackedController = GetComponent<SteamVR_TrackedController>();
28 if (trackedController == null)
33 trackedController.TriggerClicked +=
new ClickedEventHandler(DoClick);
35 if (teleportType == TeleportType.TeleportTypeUseTerrain)
40 t.position =
new Vector3(t.position.x, Terrain.activeTerrain.SampleHeight(t.position), t.position.z);
54 float refY = t.position.y;
58 Plane plane =
new Plane(Vector3.up, -refY);
59 Ray ray =
new Ray(this.transform.position, transform.forward);
62 bool hasGroundTarget =
false;
64 if (teleportType == TeleportType.TeleportTypeUseTerrain)
67 TerrainCollider tc = Terrain.activeTerrain.GetComponent<TerrainCollider>();
68 hasGroundTarget = tc.Raycast(ray, out hitInfo, 1000f);
69 dist = hitInfo.distance;
71 else if (teleportType == TeleportType.TeleportTypeUseCollider)
74 hasGroundTarget = Physics.Raycast(ray, out hitInfo);
75 dist = hitInfo.distance;
81 hasGroundTarget = plane.Raycast(ray, out dist);
87 Vector3 headPosOnGround =
new Vector3(
SteamVR_Render.Top().head.position.x, refY, SteamVR_Render.Top().head.position.z);
93 t.position = t.position + (ray.origin + (ray.direction * dist)) - headPosOnGround;