ну проблема понятна — у тебя в Update
Код
transform.localRotation = Quaternion.Euler(0, y, 0);
т.е. ты задаешь вращение относительно родителя, а он постоянно меняется
если ты хочешь сохранять вращение после вытаскивания из группы и далее крутить его по Y относительно того что было, тебе нужно сделать как-то так:
Код
Quaternion rotation;
void Update()
{
float y += (Input.GetAxisRaw("Mouse X"));
if(transform.parent) {
transform.localRotation = Quaternion.Euler(0, y, 0);
} else {
transform.rotation = rotation * Quaternion.Euler(0, y, 0);
}
}
void OnTriggerStay(Collider other)
{
GameObject vr = other.gameObject;
if (transform.parent==false)
if (vr.GetComponent<OnTrigger>())
transform.parent = vr .transform;
}
void OnTriggerExit(Collider other)
{
GameObject vr = other.gameObject;
if (vr.GetComponent<OnTrigger>()) {
rotation = transform.parent.rotation;
transform.parent = null;
}
}