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 /
avatar image
0
Question by toxxicxmodz · Nov 11, 2018 at 07:48 PM · rotationvrquaternionsteamrotation detection

Rotate object based on rotation of SteamVR Controller?

I am trying to make a dial on a machine (similar to ones you may find on a stove), where the user can rotate it, but only on one axis (in this case, the Z axis) and cannot move it from its location. Here is an image of my dial:

image

It should be noted that the scale of the model is 100, and it is a child of an empty GameObject whose scale is 1, which is a child of a model whose scale is 0.0075.

Here is the code I have so far:

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 using Valve.VR.InteractionSystem;
 [RequireComponent(typeof(Interactable))]
 public class Dial914 : MonoBehaviour
 {
     Hand playerHand;
     [SerializeField] Rigidbody dial;
     // Use this for initialization
     void Start()
     {
     }
 
     private void HandAttachedUpdate()
     {
         dial.MoveRotation(Quaternion.Euler(0, 0, -playerHand.transform.rotation.z * transform.localScale.z)); //I actually don't know why we have to negate the hand rotation here, but it works
     }
 
     protected virtual void OnAttachedToHand(Hand hand)
     {
         playerHand = hand;
     }
 }



This mostly works, but you can only rotate it halfway around and it starts to get buggy if you try to go further than that.

Here is a gfycat of the result:

https://gfycat.com/DelectableOffensiveAllosaurus

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 toxxicxmodz · Nov 11, 2018 at 07:50 PM 0
Share

Here is an image of the dial in the inspector:

image

avatar image clint205 · Jan 31, 2019 at 02:01 AM 0
Share

@toxxicxmodz Hello! Can you go into a little more detail on how you ended up getting this working correctly. I've been struggling trying to get an accurate working dial for some time now. I tried your above code and it still produced an odd result.. it would stop rotating after a certain point.. plus the dial is always reset in this case to the position of the hand when ever you grab it again.. finally.. if you actually move your hand around (side to side, up and down) it will cause the dial to spin as well.

Really wanting an easy way to use the S$$anonymous$$mVR Interaction System with a Dial. Very surprised this isnt an included script.

2 Replies

· Add your reply
  • Sort: 
avatar image
1
Best Answer

Answer by toxxicxmodz · Nov 11, 2018 at 10:15 PM

Found the answer:

 Vector3 eulerRotation = new Vector3(0, 0, playerHand.transform.eulerAngles.z);
 
 transform.rotation = Quaternion.Euler(eulerRotation);
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
1

Answer by clint205 · Jan 31, 2019 at 02:01 AM

@toxxicxmodz Hello! Can you go into a little more detail on how you ended up getting this working correctly. I've been struggling trying to get an accurate working dial for some time now. I tried your above code and it still produced an odd result.. it would stop rotating after a certain point.. plus the dial is always reset in this case to the position of the hand when ever you grab it again.. finally.. if you actually move your hand around (side to side, up and down) it will cause the dial to spin as well.

Really wanting an easy way to use the SteamVR Interaction System with a Dial. Very surprised this isnt an included script.

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

157 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

Related Questions

Set a rotation relative to position between two objects. 0 Answers

How to write a script to disable position and rotation tracking for VR 0 Answers

Steam VR touchpad to rotate object 1 Answer

Change rotation of an object based on an HTC Vive Controller 1 Answer

Camera viewport transformation from one world to the rotated world. 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