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
0
Question by xxshadowfire · Jan 22, 2020 at 12:23 AM · rotationcollisionpositionrigidbody2d

Making The Z rotation always on 0 plz help

I'm very new to Unity and C#, my sprite he requires a kinematic rigid body to move around properly but if I made it a dynamic rigid body he moves around fine just when he shoots his Z rotation changes and he rotates I would like it to stay on dynamic just if someone could please help me with the code to make sure his Z rotation is always 0 that would be great also here is the code i use to move the "fish"

public float Speed; public GameObject FirePoint; public string Tag;

 bool facingRight = true;



 public void OnTriggerEnter2D(Collider2D Border)
 {
     if (Border.gameObject.tag == Tag)
     {
         
         Debug.Log("TouchingBorder!");

         
     }
                

           
         }
 void Update()
 {
     


     Vector3 target = Camera.main.ScreenToWorldPoint(Input.mousePosition);
     target.z = transform.position.z;
     transform.position = Vector3.MoveTowards(transform.position, target, Speed * Time.deltaTime/Mathf.Abs(transform.localScale.x));



     // using mousePosition and player's transform (on orthographic camera view)
     var delta = target - transform.position;

     if (delta.x >= 0 && !facingRight)
     { // mouse is on right side of player
        transform.localScale = new Vector3(
             Mathf.Abs(transform.localScale.x),
             transform.localScale.y,
             transform.localScale.z); // or activate look right some other way
         

         FirePoint.transform.Rotate(0f, -180f, 0f);

         facingRight = true;

     }
     else if (delta.x < 0 && facingRight)
     { // mouse is on left side
         transform.localScale = new Vector3(
         -Mathf.Abs(transform.localScale.x),
              transform.localScale.y,
              transform.localScale.z);  // activate looking left



         FirePoint.transform.Rotate(0f, 180f, 0f);

         facingRight = false;
        
     }


    
 }



by the way, I watch a tutorial to get this code but I sort of understand of what it is doing also please don't refer me a link to the unity manual for rigid bodies

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 lgarczyn · Jan 23, 2020 at 04:05 AM

Same old advice, but don't use the transform to move a rigidbody.


Since your rigidbody is kinematic, you need to do a few things:

  • Use FixedUpdate instead of Update

  • Add a private RigidBody2D variable called rb, to store the rigidbody of your object

  • Use a Vector2 for the target if you don't use the z

  • change your movement code to this:

       // Get the movement magnitude this frame
         float deltaMove = Speed * Time.fixedDeltaTime / Mathf.Abs(transform.localScale.x);
         // Get the movement direction, but limited to your speed
         Vector2 targetDir = Vector2.ClampMagnitude(target - rb.position, deltaMove);
         // Move to the new position
         rb.MovePosition(rb.position + targetDir);
    
    
    

As for your rotation, note that

FirePoint.transform.Rotate(0f, -180f, 0f);

is exactly equivalent to

 FirePoint.transform.Rotate(0f, 180f, 0f);

Rotating 180 degrees on an axis clockwise is the same as rotating 180 degrees counterclockwise.


The reason that your object is rotation on the z axis is not in this code though.

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

288 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

Related Questions

How can I make a ball roll when using Vector3.MoveTowards? 0 Answers

Rigidbody2D.Cast() against mutiple colliders with a single Rigidbody2D 0 Answers

Rigidbody2D.rotation unclear behaviour 0 Answers

[UNET] Rigidbody physics sync 0 Answers

How Calculation a new rotate on circle2d when add torque 0 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