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 Lemo76 · Feb 21, 2015 at 07:08 AM · rotationjavascriptruntimechangeeulerangles

Saving Runtime Changes (JS)

When using rotation snapping, it creates a floating point onto the platform and misplaces them.

So I made this simple javascript code which snaps the platforms 4 degrees apart on runtime:

 var PermChanges : boolean;
 var Degree : float = 4;
 
 function Start () {
 transform.localRotation.eulerAngles.y = 0;
 transform.localRotation.eulerAngles.z =(Mathf.Round(transform.localRotation.eulerAngles.z/4)*4);
 transform.localRotation.eulerAngles.x = (Mathf.Round(transform.localRotation.eulerAngles.x/4)*4);
 }

When I go back to editor mode, the platforms get back out of the snapped place.

How do I set the code up so if I tick the PermChanges boolean, after exiting play mode it will keep the changes made on runtime (making the tiles be snapped on editor).

Thanks!

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

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by Jessespike · Feb 21, 2015 at 07:47 AM

Unit Snapping

While dragging any Gizmo Axis using the Translate Tool, you can hold the Control key (Command on Mac) to snap to increments defined in the Snap Settings.

You can change the unit distance that is used for the unit snapping using the menu Edit->Snap Settings…

http://docs.unity3d.com/Manual/PositioningGameObjects.html


I don't think there's a non-hacky way to do what you're asking. Play mode and edit mode are obviously different. What you could possibly do is: Make your changes in play mode, copy your transform values and paste them back in when you return to edit mode. Another solution could be write your own editor script, but that's not much different the existing Snap Preferenes.

Comment
Add comment · Show 2 · 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 Lemo76 · Feb 21, 2015 at 08:03 AM 0
Share

I use the rotation snapping control, but it always adds a floating point. Thanks.

avatar image Jessespike · Feb 21, 2015 at 06:43 PM 0
Share

I noticed that too, but that's the nature of floats. Is that 0.0001 really causing problems? If so, you'll have to write your own editor tool. I wrote a test snippet this morning, it might help you. You'll probably want to expand it or write your own. http://docs.unity3d.com/$$anonymous$$anual/editor-CustomEditors.html

 using UnityEngine;
 using UnityEditor;
 
 public class SnapTransformEditor : ScriptableWizard {
     
     [$$anonymous$$enuItem ("Selection/Truncate Transforms")]
     static void RemoveFloatPrecision() { 
 
         foreach( GameObject obj in Selection.GetFiltered( typeof( GameObject ), Selection$$anonymous$$ode.ExcludePrefab ) )
         {
             obj.transform.position = new Vector3($$anonymous$$athf.Round(obj.transform.position.x), 
                                                  $$anonymous$$athf.Round(obj.transform.position.y), 
                                                  $$anonymous$$athf.Round(obj.transform.position.z));
 
             obj.transform.rotation = Quaternion.Euler($$anonymous$$athf.Round(obj.transform.rotation.eulerAngles.x), 
                                                       $$anonymous$$athf.Round(obj.transform.rotation.eulerAngles.y), 
                                                       $$anonymous$$athf.Round(obj.transform.rotation.eulerAngles.z));
         }
 
     }
 }


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

21 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

Related Questions

2d javascript How to change a sprite during runtime 1 Answer

Why does my rotation lock? 2 Answers

transform.rotation.z gives different value than expected 1 Answer

Euler Angle problem in If check 1 Answer

Store initial rotation in JavaScript 2 Answers


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