My current stack:
I have followed a basic tutorial about teleporting and it was working well: I was able to use the left thumbstick to define the new target & orientation of the avatar teleportation. However, after updating the Oculus Integration for Unity to the latest version (v12), it stopped working.
This is the structure of my LocalPlayerController prefab:
and this was the previous (working) configuration of the LocomotionController object:
after the update, I noticed that 2 scripts changed: LocomotionController.cs
and TeleportInputHandlerAvatarTouch.cs
:
LocomotionController.cs
if we analyse this script more in detail we can notice that two fields (CharacterController
and PlayerController
) have changed type.
/************************************************************************************
See SampleFramework license.txt for license terms. Unless required by applicable law
or agreed to in writing, the sample code is provided “AS IS” WITHOUT WARRANTIES OR
CONDITIONS OF ANY KIND, either express or implied. See the license for specific
language governing permissions and limitations under the license.
************************************************************************************/
using System;
using UnityEngine;
using System.Collections;
using JetBrains.Annotations;
using UnityEngine.Assertions;
#if UNITY_EDITOR
using UnityEngine.SceneManagement;
#endif
/// <summary>
/// Simply aggregates accessors.
/// </summary>
public class LocomotionController : MonoBehaviour
{
public OVRCameraRig CameraRig;
//public CharacterController CharacterController;
public CapsuleCollider CharacterController;
//public OVRPlayerController PlayerController;
public SimpleCapsuleWithStickMovement PlayerController;
void Start()
{
/*
if (CharacterController == null)
{
CharacterController = GetComponentInParent<CharacterController>();
}
Assert.IsNotNull(CharacterController);
*/
//if (PlayerController == null)
//{
//PlayerController = GetComponentInParent<OVRPlayerController>();
//}
//Assert.IsNotNull(PlayerController);
if(CameraRig == null)
{
CameraRig = FindObjectOfType<OVRCameraRig>();
}
Assert.IsNotNull(CameraRig);
#if UNITY_EDITOR
OVRPlugin.SendEvent("locomotion_controller", (SceneManager.GetActiveScene().name == "Locomotion").ToString(), "sample_framework");
#endif
}
}
I was used to set those fields simply by dragging the LocalPlayerController
prefab into the unity editor fields, but now it's not possible. Not sure where should I pick that CapsuleCollider
and SimpleCapsuleWithStickMovement
. If I touch the left thumbstick my player moves around, which is not the intended behaviour and I don't know how to change it.
TeleportInputHandlerAvatarTouch.cs
This script just add two new fields were added (I guess for the new hand tracking system) but I don't think it's creating problems with the current configuration.
I'm completely stuck and not sure how to proceed from here. No other scripts seem to have been updated with the last upgrade and all my researches were unsuccessful.
Research lead me to this reddit post lamenting the same issue, but in their case they seem to have simply added two components to the PlayerController
: a CapsuleCollider
and SimpleCapsuleWithStickMovement
. Both should show up in your current project if you search for components to add to PlayerController
. Then you apparently can simply disable those components and your game should be playable without throwing errors, though whether the behavior is what you want is another question.