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 MattOpara · May 23, 2018 at 03:36 PM · c#rotationvector3random.rangetransform.rotate

Creating the After Effects Wiggle expression to effect rotation in C#

Hello, I'm pretty new to dealing with rotation in unity and programming in general. I've been trying to create a script that will rotate an object on the Z axis a random amount Left and then Right alternately for the duration of run time, and to have the rotation affected by 3 conditions, speed, amplitude, and frequency. I have no idea how to accomplish this as rotation does not behave the same way as position. The desired outcome can be seen here in a YouTube tutorial showing this effect created in After Effects. This is the very begging of the code i tried to produce to start creating something close the the desired results but instead ended up as pile of spaghetti code:

using System.Collections; using System.Collections.Generic; using UnityEngine; public class WiggleV3 : MonoBehaviour { public int speed; public int upperLimit = 180; //frequency upper limit public int lowerLimit = -180; //frequency lower limit float current; // current z rotation float target; // target z rotation public bool Direction; //dictates wether its rotationg left or right Vector3 targetVector; //holds target Vector3 currentVector; //holds current // Use this for initialization void Start() { target = (Random.Range(upperLimit, lowerLimit)); //create random value Vector3 targetVector = new Vector3 (0, 0, target); // prepare to move there Vector3 currentVector = new Vector3 (transform.rotation.eulerAngles); //store the current rotation transform.Rotate(0, 0, target); //move there } // Update is called once per frame void Update() { if (Direction == true) //used to go right { Debug.Log("True"); Evaluate(); Move(); Direction = false; //set to switch to other IF } if (Direction == false) //used to go left { Debug.Log("False"); Evaluate(); Move(); Direction = true; //set to switch to other IF } } public void Evaluate() { target = (Random.Range(upperLimit, lowerLimit)); //find new random value Vector3 targetVector = new Vector3 (0, 0, target); //prepare it } public void Move() { transform.Rotate (targetVector, speed * Time.deltaTime); //move to said random value } } NOTE: This does not currently work, nor are all the necessary conditions included

Thank you in advance for attempting to help me, its greatly appreciated! -Matt

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
1
Best Answer

Answer by MattOpara · May 31, 2018 at 04:54 PM

After a little work i figured it out! I decided I was going about it all wrong, rather than have a random amount of rotation checked against moved amount + current, just check for time passed and have that be what creates the randomness of movement, with a varying amount of time controlling when the object changes direction the desired effect was achieved.

 using System.Collections.Generic;
 using UnityEngine;
 
 public class WigggleV4 : MonoBehaviour {
 
     public float speed = 400f;
     public int lowTime = 20;
     public int highTime = 150;
     public float target;
     public float added;
     float current;
     public bool Direction;
     public bool occuredOnce;
 
     // Use this for initialization
     void Start()
     {
         occuredOnce = false;
         Debug.Log ("Start" + occuredOnce);
         added = (Random.Range (highTime, lowTime));
         target = Time.frameCount + added;
     }
 
     void Update ()     
     {
         //Debug.Log (current);
         current = Time.frameCount;
 
         if (Direction == true) 
         { //used to go right
 
             Debug.Log ("left");
 
             transform.Rotate (Vector3.forward * speed * Time.deltaTime);
             if (occuredOnce == false) 
             {
                 Debug.Log ("Once False DT");
                 added = (Random.Range (highTime, lowTime));
                 target = Time.frameCount + added;
                 occuredOnce = true;
             }
 
             if (target == Time.frameCount) 
             {
                 Debug.Log ("target = frames DT");
                 Direction = false;
                 occuredOnce = false;
             }
 
 
         }
 
         if (Direction == false) 
         { //used to go left
 
             Debug.Log ("Right");
                 
             transform.Rotate (Vector3.back * speed * Time.deltaTime);
             if (occuredOnce == false) 
             {
                 Debug.Log ("Once False DF");
                 added = (Random.Range (highTime, lowTime));
                 target = Time.frameCount + added;
                 occuredOnce = true;
             }
 
             if (target == Time.frameCount) 
             {
                 Debug.Log ("target = frames DF");
                 Direction = true;
                 occuredOnce = false;
             }
         }
     }
 }
 

This script also allows for more control than the After Effects Wiggle Expression because you can chose not only the maximum amount of time to pass, but also a minimum amount as well! I hope this is helpful to someone, if you have suggestions on how to make this better, please let me know. -Matt

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

513 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

Related Questions

transform.Rotate is rotating all axes, why? 0 Answers

Flip over an object (smooth transition) 3 Answers

Making my GambeObject rotate to face the direction of movement, smoothly. 0 Answers

Rotation for set time? 1 Answer

Spacesim AI pilot, vector3.cross issues 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