Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
  • Help Room /
avatar image
3
Question by DemonGamesLab · Jan 13, 2019 at 01:35 AM · c#vroculus

OVR Oculus, Hands issue, cant delete held objects

I'm not sure if this is a bug with unity or Oculus integration. Let me try to explain.

I am trying to destroy an object while the user is holding the object but it returns an error.

MissingReferenceException: The object of type 'BoxCollider' has been destroyed but you are still trying to access it.

A little background on my game. I spawn a prefab object and the user can pick it up and move it to another location, at this point the user can add it to another object and the object needs to be destroyed. When it is destroyed the error doesn't show straight away, only when I go back to grab another re-spawned object and then press the grip on the other controller.

I understand what the error is saying, but the box collider on that object has already been assigned in the prefab (I have checked this in the editor). The conclusion I have come to is that maybe the Oculus script, OVRGrabber is storing the grab information and when it deletes, it gets confusing since the user didn't let go of the grip button. But I have looked everywhere and I have even tried to change that script but doesn't let me change anything since it is protected. At the moment kind of ripping my hair out. If any more info is needed please ask. Hopefully, someone can help and I appreciate any help given.

Comment
Add comment · Show 2
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image jlazovskis · May 02, 2019 at 08:22 AM 0
Share

Have you figured out how to solve this? I'm having the same exact problem, posted here. I found a workaround by ins$$anonymous$$d destroying only the $$anonymous$$eshRenderer of the object and making it not kinematic, so that it becomes invisible and drops to the bottom of of the scene. The only problem (for me) is that the object still exists and causes performance issues.

avatar image DemonGamesLab jlazovskis · May 02, 2019 at 03:55 PM 0
Share

I found 1 work around, but it may not work for every game. The way i did it is to check if the hand is colliding with the object, and i changed the mechanic so that it says release grip to add that object, and once the user has released, then destroy the object and do what you need to do. For me this works but Its not really a fix its just a work around. If you want to do it my way, just make a script and check if that tagged obj is being held by the player, and then check if the player wants to destroy and only destroy if the player is not holding the obj.

3 Replies

· Add your reply
  • Sort: 
avatar image
1

Answer by roman_sedition · Sep 10, 2020 at 06:40 AM

You need a null check in the OVRGrabber. The OVRGrabber is storing references to objects, but it doesn't know if they've been destroyed since it only removes the reference in OnTriggerExit.

There is a Foreach loop at the top of GrabBegin, add the null check there.

i.e

 protected virtual void GrabBegin()
     {
         float closestMagSq = float.MaxValue;
         OVRGrabbable closestGrabbable = null;
         Collider closestGrabbableCollider = null;
 
         // Iterate grab candidates and find the closest grabbable candidate
         foreach (OVRGrabbable grabbable in m_grabCandidates.Keys)
         {
             if(grabbable == null)
             {
                 continue;
             }
 etc..
 
Comment
Add comment · Show 1 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image Elbadro · Jan 22, 2021 at 12:51 AM 0
Share

@roman_sedition that worked for me, thank you so much! :D Had the problem that I was deleting objects that were colliding with the Hand (which had a grabber attached to it). After that the grabber would not work anymore. With your solution everything works now. $$anonymous$$uch appreciated!

avatar image
1

Answer by BenHowick · Feb 13, 2021 at 03:06 AM

This may be a solved issue but I thought I would add this in case anyone finds this and needs it :)

The answer by @roman_sedition worked for me and is a great method and helped me work out what was going wrong but I didn't really like the nulls still being in the list. Along with I don't like editing the imported code as it is less reusable for other projects as you have to edit the code again to be able to use the fix after every import.

This method may be clunky but I'm happy with it. I'm not saying the current answer is wrong, I am purely trying to give options :) Any improvements are appreciated.

This override function can be added into a class being derived from the OVRGrabber class meaning the original file doesn't need to be editted.

 public class CustomGrabberScript : OVRGrabber    //Custom script/class derives from OVRGrabber
 {
 
     protected override void GrabBegin()         //Gets called instead of actual GrabBegin()
     {
         List<OVRGrabbable> ToRemove = new List<OVRGrabbable>();     //creates empty list for items
 
         foreach (OVRGrabbable grabbable in m_grabCandidates.Keys)   //loops through each item
         {
             if (grabbable == null)   //If has been deleted but not removed from list (null reference)
             {
                 ToRemove.Add(grabbable);    //Adds object to the list of keys that need to be removed
             }
         }
 
         for (int i = 0; i < ToRemove.Count; i++)    //Loops through items that need to be removed
         {
             m_grabCandidates.Remove(ToRemove[i]);   //Removes them from dictionary
         }
 
         base.GrabBegin();     //Calls original function
     }
 }

As far as I'm aware, It had to be done this way or similar as dictionaries can't be edited while being looped over. Along with dictionaries not being accessible using a for i=..... loop.
Sorry for all the spiel. I hope this helps someone :)

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image
0

Answer by DemonGamesLab · May 02, 2019 at 03:54 PM

I found 1 work around, but it may not work for every game. The way i did it is to check if the hand is colliding with the object, and i changed the mechanic so that it says release grip to add that object, and once the user has released, then destroy the object and do what you need to do. For me this works but Its not really a fix its just a work around. If you want to do it my way, just make a script and check if that tagged obj is being held by the player, and then check if the player wants to destroy and only destroy if the player is not holding the obj.

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

663 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

XR Input: primary2DAxis always returns 0 1 Answer

Problem using Oculus Touch Joystick Input to move XRRig 1 Answer

XR Input: primary2DAxis always returns 0 1 Answer

Vector3 from another objects rotation 1 Answer

How do I lock hand movement through script in Unity oculus vr 1 Answer


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges