Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 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 DayyanSisson · Dec 24, 2011 at 01:33 AM · transformrotaterotatearoundtransform.rotatespin

Rotate Around Object

I have a cylinder, that I want to spin. Normally I would have no problem here with this code :

 void Update () {
         
         wheel.Rotate(Vector3.right * rotateVelocity * Time.deltaTime);
     }

Unfortunately, this doesn't work because the center of the wheel is offset far away. Centering it brings up some problems. So I want to manually set the center by putting an empty gameObject in the middle of the cylinder. I need the cylinder to rotate around the that empty gameObject. How do I set the object that I want the cylinder to rotate around?

Comment
Add comment
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

2 Replies

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

Answer by DayyanSisson · Dec 24, 2011 at 01:58 AM

Nevermind, I figured it out. I just used RotateAround, and set the position using a variable Transform. Here's the code for anyone who wants it :

 using UnityEngine;
 using System.Collections;
 
 public class SpinningWheel : MonoBehaviour {
     
     public float rotateVelocity;
     
     public Transform pivot;
     private Transform wheel;
 
     void Awake () {
     
         wheel = transform;
     }
     
     void Update () {
         
         wheel.RotateAround(pivot.position, Vector3.right, rotateVelocity * Time.deltaTime);
     }
 }
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 sketchers1 · Dec 24, 2011 at 01:49 AM

What I have done in the past is that I set the cylinder as a child of the empty game object(once i have placed the game object where I want it) I then attach this Javascript to the cylinder, you will have to edit your x,y,z variables in the inspector to get it to rotate how you want:

var xSpeed : float = 1;

var ySpeed : float = 1;

var zSpeed : float = 1;

var manual : boolean = false;

function Update () {

 if( !manual )
 {
 
     transform.RotateAround( transform.position, Vector3.right, ySpeed * Time.deltaTime );
     transform.RotateAround( transform.position, Vector3.up, xSpeed * Time.deltaTime );
     transform.RotateAround( transform.position, Vector3.forward, zSpeed * Time.deltaTime );
     
 }
 else
 {
     
     if( Input.GetAxis("Horizontal") != 0 )
     {
         
         transform.RotateAround( transform.position, Vector3.up, Input.GetAxis("Horizontal")*xSpeed * Time.deltaTime );
         
     }
     
     if( Input.GetAxis("Vertical") != 0 )
     {
         
         transform.RotateAround( transform.position, Vector3.right, Input.GetAxis("Vertical")*ySpeed * Time.deltaTime );
         
     }
     
 }
 

}

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

5 People are following this question.

avatar image avatar image avatar image avatar image avatar image

Related Questions

Rotating Transform Evenly 1 Answer

Why am I getting 2 different results with RotateAround? Trying to move cubes on surface of sphere. 0 Answers

Orientation Vs. Rotation: How do I specify more than 360deg rotation for a quaternion, in the editor? 1 Answer

transform RotateAround 1 Answer

transform.rotate only 1 time for 180 degrees? 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