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 ogim · Nov 13, 2018 at 08:51 PM · rotationrigidbody2dprojectilereflection

How to rotate a projectile and mantain constant speed when hitting a wall? 2D

Hi, everyone. I am doing a top-down 2d game where i have a character that shoots bullets. As soon as these bullets are shooted, they are going around in the scene forever till the round has not finished. My point is that i cant rotate the projectile in a manner so that it does the reflection to the wall correctly and continue going around through the scene at constant speed.

I searched and founded that i need a wall with a rigidbody and a rigidbody on the projectile, both with drag to 0 and freeze rotation, and gravity set to 0. Also the respective colliders on it and the following script: (note that "Opponent" is the wall in this case)

void OnEnable() { rb = GetComponent<Rigidbody2D>(); rb.velocity = transform.right * speed; } void OnCollisionEnter2D(Collision2D collision) { if (collision.transform.CompareTag("Opponent")) { Vector3 reflectedPosition = Vector3.Reflect(transform.right, other.contacts[0].normal); rb.velocity = (reflectedPosition).normalized * speed; //rotate Vector3 dir = rb.velocity; float angle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg; rb.MoveRotation(angle); } } I tried it many times but it still does not work. The projectile moves in strange ways, sometimes it doesnt reflect properly, rotation does not occur and it slows down and speed up at an unexpected speed. I am really struggling to find a solution, so i am writing here, maybe someone could help me out.

PS: I also dont know how to put correct rotation if i want to face it up or down depending on which direction i am looking with my character (for left and right i just use Flip, because if i change z rotation it mess up even more)

I am so thankful of everyone could help me out on this! Cheers, Ogim

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

0 Replies

· Add your reply
  • Sort: 

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

130 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

Related Questions

(2D) Face Object in Direction of Travel 1 Answer

How do I create a solid GameObject (arrow) made out of multiple child objects (head, shaft, fletching)? 0 Answers

Projetil rotation in straight line trajectory 2 Answers

2D rigidbody velocity relative to rotation? 0 Answers

Rigidbody2d physic movement on 2d terrain. 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