Vector3.SmoothDamp movement gets stuck on Quest 2
I'm currently working with some fellow students on a VR experience where you move around in a kind of a floater/elevator that can move on the horizontal and vertical axis and aligns itself according to the destination. The whole thing actually already works very well and smoothly, at least on the computer, but standalone on the Quest2 the floater/elevator sometimes just gets stuck on the way to a destination and I don't know what the problem could be. I'm afraid it's somehow due to small framerate drops. Does anyone have a solution or suggestion on how to solve the problem? I'm also still quite a coding beginner and therefore my code is not optimal. Movement is done in the update.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class FloaterSystem : MonoBehaviour
{
Vector3 startingPos;
Quaternion startingRot;
Transform targetObj;
Transform previousTarget;
Vector3 targetPos;
Vector3 yOffset;
float yOffsetValue = 1;
Quaternion targetRot;
Vector3 velocity = Vector3.zero;
[Tooltip("A higher Number is slower!")][SerializeField] float elevatorSpeed = 70;
//string playerTag = "Player";
GameObject overviewInterface;
GameObject werkeInterface;
GameObject lebenInterface;
bool floaterActivated = false;
bool playerIsAttached = true;
// Start is called before the first frame update
void Start()
{
yOffset = new Vector3(0, yOffsetValue, 0);
overviewInterface = transform.Find("Interfaces/Overview").gameObject;
werkeInterface = transform.Find("Interfaces/Werke").gameObject;
lebenInterface = transform.Find("Interfaces/Leben").gameObject;
overviewInterface.SetActive(true);
werkeInterface.SetActive(false);
lebenInterface.SetActive(false);
startingPos = transform.position; //save initial transform
startingRot = transform.rotation;
targetObj = transform;
previousTarget = targetObj;
}
// Update is called once per frame
void Update()
{
if (floaterActivated)
{
transform.position = Vector3.SmoothDamp(transform.position, targetPos, ref velocity, Time.deltaTime * elevatorSpeed);
transform.rotation = Quaternion.Slerp(transform.rotation, targetRot, Time.deltaTime);
//transform.rotation = Quaternion.RotateTowards(transform.rotation, targetRot, (elevatorSpeed/2) * Time.deltaTime);
if (transform.position == targetPos)
{
floaterActivated = false;
}
}
}
public void ChangeFloor(GameObject targetObject)
{
if (playerIsAttached)
{
previousTarget = targetObj;
targetObj = targetObject.transform;
targetPos = targetObj.position;
targetRot = targetObj.rotation;
floaterActivated = true;
}
}
public void StartingFloor()
{
if (playerIsAttached)
{
targetPos = startingPos;
targetRot = startingRot;
floaterActivated = true;
}
}
public void PreviousFloor()
{
if (playerIsAttached)
{
targetPos = previousTarget.position;
targetRot = previousTarget.rotation;
floaterActivated = true;
}
}
private void OnTriggerEnter(Collider other)
{
//if (other.gameObject.tag == playerTag) //checks if player is near/on floater
//{
// other.transform.parent = transform;
// playerIsAttached = true;
//}
if (other.gameObject.tag == "OverviewZone")
{
overviewInterface.SetActive(true);
werkeInterface.SetActive(false);
lebenInterface.SetActive(false);
}
if (other.gameObject.tag == "WerkeZone")
{
overviewInterface.SetActive(false);
werkeInterface.SetActive(true);
lebenInterface.SetActive(false);
}
if (other.gameObject.tag == "LebenZone")
{
overviewInterface.SetActive(false);
werkeInterface.SetActive(false);
lebenInterface.SetActive(true);
}
}
private void OnTriggerExit(Collider other)
{
//if (other.gameObject.tag == playerTag) //checks if player leaves floater
//{
// other.transform.parent = null;
// playerIsAttached = false;
//}
}
}
Your answer
![](https://koobas.hobune.stream/wayback/20220613052935im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
is it possible to edit the Continuous Move provider (Action based) to add a jump feature? 0 Answers
VR Vive Tracker barely moving 1 Answer
Cardboard and Navmesh: Problem with Player Movement 0 Answers
Quick question: Standard Shader or Mobile Shaders for GearVR-scene? 1 Answer
Navigation in VR Mode?!! 0 Answers