public void ResetOffsets() { offsetPos = Vector3.zero; oldRot = 0; offsetRot = 0; var targetPos = player.GetPosition(); var targetRot = player.GetRotation(); targetTransform.SetPositionAndRotation(targetPos, targetRot); }
/// <summary> /// When the elevator doors are already half closed while closing, this function is called /// </summary> public void EventHalfClosedOnClosing(int elevatorNumber) { Debug.Log("[ElevatorController] Received Event HalfClosedOnClosing"); BoxCollider inDoorCollider; GameObject elevatorObj; BoxCollider doorCollider; if (elevatorNumber == 0) { inDoorCollider = _playerInsideDoorElevator1Detector; elevatorObj = _elevator1; doorCollider = _elevator1DoorCollider; } else if (elevatorNumber == 1) { inDoorCollider = _playerInsideDoorElevator2Detector; elevatorObj = _elevator2; doorCollider = _elevator2DoorCollider; } else { inDoorCollider = _playerInsideDoorElevator3Detector; elevatorObj = _elevator3; doorCollider = _elevator3DoorCollider; } //Check if player is inside the door and teleport him/her if that is the case if (inDoorCollider.bounds.Contains(_localPlayer.GetTrackingData(VRCPlayerApi.TrackingDataType.Head).position)) { _localPlayer.TeleportTo(elevatorObj.transform.position, _localPlayer.GetRotation()); } doorCollider.enabled = true; }
Vector3 GetMovementInputDirection() { float x = Input.GetAxis("Horizontal"); float z = Input.GetAxis("Vertical"); // If not holding anything return forward if (x == 0 && z == 0) { z = 1; } return((player.GetRotation() * new Vector3(x, 0f, z)).normalized); }
public void Move2Forward() { var dv = velocity - lastVelocity; var trackingData = p.GetTrackingData(trackingTarget); if (trackingData.Equals(null)) { return; } var h2v = trackingData.rotation * Quaternion.Inverse(p.GetRotation()); // horizon to view dv = h2v * dv; //dv = ((p.GetWalkSpeed() - 0.1f) * Mathf.Max(drag, 1) * Time.deltaTime) * dv.normalized; // cancel drag effect velocity = lastVelocity + dv; }
private void Start() { player = Networking.LocalPlayer; if (player == null) { return; } if (trackPlayspace) { var targetPos = player.GetPosition(); var targetRot = player.GetRotation(); targetTransform.SetPositionAndRotation(targetPos, targetRot); } isEditor = false; }
public void Play() { if (isNotInit) { return; } VRCPlayerApi player = Networking.GetOwner(gameObject); //Update avatar height if (Time.time - lastAvatarHeightUpdate > 10) { avatarHeight = GetAvatarHeight(player); lastAvatarHeightUpdate = Time.time; transform.localScale = Vector3.one * avatarHeight; float pitch = -Mathf.Log(avatarHeight * 0.1f) * 0.4f + 0.2f; pitch = Mathf.Clamp(pitch, 0.2f, 3f); float volume = avatarHeight * 0.3f + 0.5f; volume = Mathf.Clamp(volume, 0.5f, 1f); float distance = avatarHeight * 2; distance = Mathf.Clamp(distance, 1, 10); _audioSource.pitch = pitch; _audioSource.maxDistance = distance; _audioSource.volume = volume; Debug.Log($"[Clapper] Height: {avatarHeight} => pitch: {pitch} => volume: {volume} => distance: {distance}"); } //Set position if (player.IsUserInVR()) { transform.position = Vector3.Lerp(player.GetTrackingData(VRCPlayerApi.TrackingDataType.LeftHand).position, player.GetTrackingData(VRCPlayerApi.TrackingDataType.RightHand).position, 0.5f); } else { transform.position = isHumanoid ? player.GetBonePosition(HumanBodyBones.Chest) : Vector3.Lerp(player.GetPosition(), player.GetTrackingData(VRCPlayerApi.TrackingDataType.Head).position, 0.7f); } transform.rotation = player.GetRotation(); //Play particle and audio source _particleSystem.Emit(1); _audioSource.Play(); }
public void constupdate() { ismaster.text = "ismaster: " + PlayerApiref.isMaster.ToString(); playerid.text = "playerid: " + PlayerApiref.playerId.ToString(); playergrounded.text = "isplayergrounded: " + PlayerApiref.IsPlayerGrounded().ToString(); isowner.text = "isowner: " + PlayerApiref.IsOwner(ownercheck).ToString(); gravitystrength.text = "gravitystrength: " + PlayerApiref.GetGravityStrength().ToString(); if (!changeapi) { runspeed.text = "runspeed: " + PlayerApiref.GetRunSpeed().ToString(); walkspeed.text = "walkspeed: " + PlayerApiref.GetWalkSpeed().ToString(); jumpimpulse.text = "jumpimpulse: " + PlayerApiref.GetJumpImpulse().ToString(); } else { runspeed.text = "runspeed: NULL"; walkspeed.text = "walkspeed: NULL"; jumpimpulse.text = "jumpimpulse: NULL"; } velocity.text = "velocity: " + PlayerApiref.GetVelocity().ToString(); position.text = "position: " + PlayerApiref.GetPosition().ToString(); rotation.text = "rotation: " + PlayerApiref.GetRotation().ToString(); }
private void Update() { Vector3 playerPosition = playerLocal.GetPosition(); Quaternion playerRotation = playerLocal.GetRotation(); Vector3 closestPoint = platformCollider.ClosestPoint(playerPosition); playerRelativeHeight = playerPosition.y - closestPoint.y; isAlignedToPlatform = (playerPosition.x == closestPoint.x) && (playerPosition.z == closestPoint.z); if (grabHeight.y <= playerRelativeHeight && playerRelativeHeight <= grabHeight.x && isAlignedToPlatform) { if (lockedPlayerY <= -10000) { lockedPlayerY = playerPosition.y; } // How much has platform moved since last frame? Vector3 platformPosDelta = platform.transform.position - platformPosBuffer; // Move player the same distance the platform moved newPos = playerPosition + platformPosDelta; if (lockPlayerY) { newPos.y = lockedPlayerY; } playerLocal.TeleportTo(newPos, playerRotation); } else { lockedPlayerY = -10001; } // Set remember pre-move position of platform for next frame platformPosBuffer = platform.transform.position; }
public void UpdateTrackValue() { if (trackType == 1) { VRCPlayerApi player = null; switch (targetPlayer) { case 0: player = Networking.LocalPlayer; break; case 1: player = Networking.GetOwner(gameObject); break; case 2: if (targetTrigger) { var playerField = (VRCPlayerApi)targetTrigger.GetProgramVariable("triggeredPlayer"); player = playerField; } break; case 3: VRCPlayerApi[] players = new VRCPlayerApi[VRCPlayerApi.GetPlayerCount()];; VRCPlayerApi.GetPlayers(players); if (index < players.Length) { player = players[index]; } else { player = Networking.LocalPlayer; } break; } if (player == null || !player.IsValid()) { return; } switch (spot) { case "IsUserInVR": value_b = player.IsUserInVR(); break; case "IsPlayerGrounded": value_b = player.IsPlayerGrounded(); break; case "IsMaster": value_b = player.isMaster; break; case "IsInstanceOwner": value_b = player.isInstanceOwner; break; case "IsGameObjectOwner": value_b = player.IsOwner(gameObject); break; case "Position": value_v3 = player.GetPosition(); if (positionTracking) { transform.position = player.GetPosition(); transform.rotation = player.GetRotation(); } break; case "Rotation": value_v3 = player.GetRotation().eulerAngles; break; case "HeadPosition": value_v3 = player.GetTrackingData(VRCPlayerApi.TrackingDataType.Head).position; if (positionTracking) { transform.position = player.GetTrackingData(VRCPlayerApi.TrackingDataType.Head).position; transform.rotation = player.GetTrackingData(VRCPlayerApi.TrackingDataType.Head).rotation; } break; case "HeadRotation": value_v3 = player.GetTrackingData(VRCPlayerApi.TrackingDataType.Head).rotation.eulerAngles; break; case "RightHandPosition": value_v3 = player.GetTrackingData(VRCPlayerApi.TrackingDataType.RightHand).position; if (positionTracking) { transform.position = player.GetTrackingData(VRCPlayerApi.TrackingDataType.RightHand).position; transform.rotation = player.GetTrackingData(VRCPlayerApi.TrackingDataType.RightHand).rotation; } break; case "RightHandRotation": value_v3 = player.GetTrackingData(VRCPlayerApi.TrackingDataType.RightHand).rotation.eulerAngles; break; case "LeftHandPosition": value_v3 = player.GetTrackingData(VRCPlayerApi.TrackingDataType.LeftHand).position; if (positionTracking) { transform.position = player.GetTrackingData(VRCPlayerApi.TrackingDataType.LeftHand).position; transform.rotation = player.GetTrackingData(VRCPlayerApi.TrackingDataType.LeftHand).rotation; } break; case "LeftHandRotation": value_v3 = player.GetTrackingData(VRCPlayerApi.TrackingDataType.LeftHand).rotation.eulerAngles; break; case "Velocity": value_v3 = player.GetVelocity(); break; case "DisplayName": value_s = player.displayName; break; } } if (trackType == 2) { if (!targetObject) { return; } switch (spot) { case "IsActive": value_b = targetObject.activeSelf; break; case "Position": value_v3 = targetObject.transform.position; if (positionTracking) { transform.position = targetObject.transform.position; transform.rotation = targetObject.transform.rotation; } break; case "Rotation": value_v3 = targetObject.transform.rotation.eulerAngles; break; case "LocalPosition": value_v3 = targetObject.transform.localPosition; if (positionTracking) { transform.position = targetObject.transform.position; transform.rotation = targetObject.transform.rotation; } break; case "LocalRotation": value_v3 = targetObject.transform.localRotation.eulerAngles; break; case "Velocity": value_v3 = targetObject.GetComponent <Rigidbody>().velocity; break; case "AngularVelocity": value_v3 = targetObject.GetComponent <Rigidbody>().angularVelocity; break; } } if (trackType == 3) { switch (spot) { case "PlayerCount": value_i = VRCPlayerApi.GetPlayerCount(); value_f = value_i; break; case "Year": value_i = System.DateTime.Now.Year; value_f = value_i; break; case "Month": value_i = System.DateTime.Now.Month; value_f = value_i; break; case "Day": value_i = System.DateTime.Now.Day; value_f = value_i; break; case "DayOfWeek": value_i = (int)System.DateTime.Now.DayOfWeek; value_f = value_i; break; case "Hour": value_i = System.DateTime.Now.Hour; value_f = value_i; break; case "Minute": value_i = System.DateTime.Now.Minute; value_f = value_i; break; case "Second": value_i = System.DateTime.Now.Second; value_f = value_i; break; case "JoinHours": value_f = (float)(System.DateTime.Now - startTime).TotalHours; value_i = (int)value_f; break; case "JoinMinutes": value_f = (float)(System.DateTime.Now - startTime).TotalMinutes; value_i = (int)value_f; break; case "JoinSeconds": value_f = (float)(System.DateTime.Now - startTime).TotalSeconds; value_i = (int)value_f; break; } } if (trackType == 4) { if (targetComponent) { if (valueType == 0) { if (spot == "Toggle") { var toggle = (Toggle)targetComponent; value_b = toggle.isOn; } } if (valueType == 1) { if (spot == "Text") { var text = (Text)targetComponent; int.TryParse(text.text, out value_i); } if (spot == "InputField") { var inputField = (InputField)targetComponent; int.TryParse(inputField.text, out value_i); } } if (valueType == 2) { if (spot == "Slider") { var slider = (Slider)targetComponent; value_f = slider.value; } if (spot == "Scrollbar") { var scrollbar = (Scrollbar)targetComponent; value_f = scrollbar.value; } if (spot == "Text") { var text = (Text)targetComponent; float.TryParse(text.text, out value_f); } if (spot == "InputField") { var inputField = (InputField)targetComponent; float.TryParse(inputField.text, out value_f); } } if (valueType == 4) { if (spot == "Text") { var text = (Text)targetComponent; value_s = text.text; } if (spot == "InputField") { var inputField = (InputField)targetComponent; value_s = inputField.text; } } } } if (trackType == 5) { if (targetComponent != null && spot != "") { Animator animator = (Animator)targetComponent; if (valueType == 0) { value_b = animator.GetBool(spot); } if (valueType == 1) { value_i = animator.GetInteger(spot); } if (valueType == 2) { value_f = animator.GetFloat(spot); } } } if (trackType == 6) { switch (spot) { case "RightIndexTrigger": value_f = Input.GetAxis("Oculus_CrossPlatform_SecondaryIndexTrigger"); break; case "LeftIndexTrigger": value_f = Input.GetAxis("Oculus_CrossPlatform_PrimaryIndexTrigger"); break; case "RightGrip": value_f = Input.GetAxis("Oculus_CrossPlatform_SecondaryHandTrigger"); break; case "LeftGrip": value_f = Input.GetAxis("Oculus_CrossPlatform_PrimaryHandTrigger"); break; } } UpdateSubValue(); }
private void Update() { VRCPlayerApi PlayerApiref = Networking.GetOwner(gameObject); if (PlayerApiref != null && track) { transform.position = PlayerApiref.GetPosition(); transform.rotation = PlayerApiref.GetRotation(); bonesset(HumanBodyBones.Hips, 0, PlayerApiref); bonesset(HumanBodyBones.LeftUpperLeg, 1, PlayerApiref); bonesset(HumanBodyBones.RightUpperLeg, 2, PlayerApiref); bonesset(HumanBodyBones.LeftLowerLeg, 3, PlayerApiref); bonesset(HumanBodyBones.RightLowerLeg, 4, PlayerApiref); bonesset(HumanBodyBones.LeftFoot, 5, PlayerApiref); bonesset(HumanBodyBones.RightFoot, 6, PlayerApiref); bonesset(HumanBodyBones.Spine, 7, PlayerApiref); bonesset(HumanBodyBones.Chest, 8, PlayerApiref); bonesset(HumanBodyBones.Neck, 9, PlayerApiref); bonesset(HumanBodyBones.Head, 10, PlayerApiref); bonesset(HumanBodyBones.LeftShoulder, 11, PlayerApiref); bonesset(HumanBodyBones.RightShoulder, 12, PlayerApiref); bonesset(HumanBodyBones.LeftUpperArm, 13, PlayerApiref); bonesset(HumanBodyBones.RightUpperArm, 14, PlayerApiref); bonesset(HumanBodyBones.LeftLowerArm, 15, PlayerApiref); bonesset(HumanBodyBones.RightLowerArm, 16, PlayerApiref); bonesset(HumanBodyBones.LeftHand, 17, PlayerApiref); bonesset(HumanBodyBones.RightHand, 18, PlayerApiref); bonesset(HumanBodyBones.LeftToes, 19, PlayerApiref); bonesset(HumanBodyBones.RightToes, 20, PlayerApiref); bonesset(HumanBodyBones.LeftEye, 21, PlayerApiref); bonesset(HumanBodyBones.RightEye, 22, PlayerApiref); bonesset(HumanBodyBones.Jaw, 23, PlayerApiref); bonesset(HumanBodyBones.LeftThumbProximal, 24, PlayerApiref); bonesset(HumanBodyBones.LeftThumbIntermediate, 25, PlayerApiref); bonesset(HumanBodyBones.LeftThumbDistal, 26, PlayerApiref); bonesset(HumanBodyBones.LeftIndexProximal, 27, PlayerApiref); bonesset(HumanBodyBones.LeftIndexIntermediate, 28, PlayerApiref); bonesset(HumanBodyBones.LeftIndexDistal, 29, PlayerApiref); bonesset(HumanBodyBones.LeftMiddleProximal, 30, PlayerApiref); bonesset(HumanBodyBones.LeftMiddleIntermediate, 31, PlayerApiref); bonesset(HumanBodyBones.LeftMiddleDistal, 32, PlayerApiref); bonesset(HumanBodyBones.LeftRingProximal, 33, PlayerApiref); bonesset(HumanBodyBones.LeftRingIntermediate, 34, PlayerApiref); bonesset(HumanBodyBones.LeftRingDistal, 35, PlayerApiref); bonesset(HumanBodyBones.LeftLittleProximal, 36, PlayerApiref); bonesset(HumanBodyBones.LeftLittleIntermediate, 37, PlayerApiref); bonesset(HumanBodyBones.LeftLittleDistal, 38, PlayerApiref); bonesset(HumanBodyBones.RightThumbProximal, 39, PlayerApiref); bonesset(HumanBodyBones.RightThumbIntermediate, 40, PlayerApiref); bonesset(HumanBodyBones.RightThumbDistal, 41, PlayerApiref); bonesset(HumanBodyBones.RightIndexProximal, 42, PlayerApiref); bonesset(HumanBodyBones.RightIndexIntermediate, 43, PlayerApiref); bonesset(HumanBodyBones.RightIndexDistal, 44, PlayerApiref); bonesset(HumanBodyBones.RightMiddleProximal, 45, PlayerApiref); bonesset(HumanBodyBones.RightMiddleIntermediate, 46, PlayerApiref); bonesset(HumanBodyBones.RightMiddleDistal, 47, PlayerApiref); bonesset(HumanBodyBones.RightRingProximal, 48, PlayerApiref); bonesset(HumanBodyBones.RightRingIntermediate, 49, PlayerApiref); bonesset(HumanBodyBones.RightRingDistal, 50, PlayerApiref); bonesset(HumanBodyBones.RightLittleProximal, 51, PlayerApiref); bonesset(HumanBodyBones.RightLittleIntermediate, 52, PlayerApiref); bonesset(HumanBodyBones.RightLittleDistal, 53, PlayerApiref); bonesset(HumanBodyBones.UpperChest, 54, PlayerApiref); } if (localwait && track) { localwait = false; } else if (localwait && Networking.IsOwner(gameObject)) { track = true; } }
private void Update() { transform.SetPositionAndRotation(playerLocal.GetPosition(), playerLocal.GetRotation()); }
private void Update() { if (follow) { if (!Utilities.IsValid(owner) || !owner.IsOwner(gameObject)) { owner = Networking.GetOwner(gameObject); } sign.SetPositionAndRotation(owner.GetTrackingData(VRCPlayerApi.TrackingDataType.Head).position + new Vector3(0, offset, 0), owner.GetRotation()); } }
private void SnowboardingUpdate() { // Turn board if (localUser != null) { if (localUser.IsUserInVR()) { VrPlayerInputRotationUpdate(); } else { DesktopPlayerInputRotationUpdate(); } } // Boost string rightHand_AButton = "Fire2"; if (Time.time - lastBoostTime > BoostCooldown && (Input.GetKeyDown(DesktopSnowboardBoostKey) || Input.GetButtonDown(rightHand_AButton))) { float boost = 2; momentum.x += boost; lastBoostTime = Time.time; } RaycastHit hit; if (Physics.Raycast(transform.position + Vector3.up, Vector3.down, out hit, 1.2f, SlopeMask)) { // On ground UpdateGroundMomentum(transform.forward, hit.normal); Vector3 wantedMovement = transform.forward * momentum.x + transform.right * momentum.y; wantedMovement = Vector3.ProjectOnPlane(wantedMovement, hit.normal).normalized *wantedMovement.magnitude; transform.position += wantedMovement * Time.deltaTime; Vector3 correctedPosition = transform.position + ((hit.distance - 1) - wantedDistanceToGround) * Vector3.down; Quaternion correctedRotation = Quaternion.FromToRotation(transform.up, hit.normal) * transform.rotation; transform.rotation = Quaternion.Lerp(transform.rotation, correctedRotation, 10f * Time.deltaTime); if (correctedPosition.y > transform.position.y) { transform.position = correctedPosition; } else { transform.position = Vector3.Lerp(transform.position, correctedPosition, 10f * Time.deltaTime); } gravityMomentum = 0; isFalling = false; // Ensure player is not inside other colliders if (Physics.Raycast(transform.position + Vector3.up, Vector3.down, out hit, 1.2f, SlopeMask)) { correctedPosition = transform.position + ((hit.distance - 1) - wantedDistanceToGround) * Vector3.down; if (correctedPosition.y > transform.position.y) { transform.position = correctedPosition; } } } else { Vector3 wantedMovement = transform.forward * momentum.x * Time.deltaTime + transform.right * momentum.y * Time.deltaTime; transform.position = transform.position + wantedMovement; // In air if (!isFalling) { // First frame falling gravityMomentum = -wantedMovement.y; isFalling = true; } transform.position += Vector3.down * gravityMomentum; Quaternion correctedRotation = Quaternion.FromToRotation(transform.up, Vector3.up) * transform.rotation; transform.rotation = Quaternion.Lerp(transform.rotation, correctedRotation, 10f * Time.deltaTime); // Update gravity momentum gravityMomentum += Time.deltaTime * gravity; } // Move player if (localUser != null) { if (localUser.IsUserInVR()) { localUser.TeleportTo(transform.position + Vector3.up * playerYOffset, StartPosition.rotation, VRC_SceneDescriptor.SpawnOrientation.AlignRoomWithSpawnPoint, true); } else { localUser.TeleportTo(transform.position + Vector3.up * playerYOffset, localUser.GetRotation(), VRC_SceneDescriptor.SpawnOrientation.Default, true); } } }
private void Update() { timeSinceLastBlink += Time.deltaTime; timeSinceLastRecharge += Time.deltaTime; if (timeSinceLastRecharge > cooldownRecharge) { charges += refillAmount; if (charges > maxCharges) { charges = maxCharges; } timeSinceLastRecharge = 0; } // TODO: Some other button might be better for this but idk which one yet. // If jump button is pressed. if ((Input.GetButtonDown("Oculus_CrossPlatform_SecondaryThumbstick") || Input.GetButtonDown("Jump")) && timeSinceLastBlink > cooldownBlink && charges > 0) { blinkDist = maxBlinkDistance; // TODO: This may need to be changed to avatar origin position to prevent clipping into ground with tall avatars. headPos = playerLocal.GetBonePosition(HumanBodyBones.Head); headRot = playerLocal.GetBoneRotation(HumanBodyBones.Head); if (Physics.Raycast(headPos, headRot * Vector3.forward, out rayHit)) { if (rayHit.distance <= maxBlinkDistance) { blinkDist = rayHit.distance; } } playerLocal.TeleportTo(playerLocal.GetPosition() + (headRot * Vector3.forward) * (blinkDist - destinationDistFromCollider), playerLocal.GetRotation()); timeSinceLastBlink = 0; charges--; } }