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 DEADTERMINATOR · Jun 21, 2017 at 11:09 PM · 2d-platformercollision2draycasthit2dnormal

RaycastHit2D normal returns raycast in opposite direction, not surface normal.

What I'm trying to do is when a projectile in my game hits a surface, I want to spawn an impact effect along the surface. To do this, I figure I need the normal of the surface the projectile is colliding with. RaycastHit2D is supposed to provide this, so I raycasted from the projectile collision point to the surface it collided with, but after some odd results and ray drawing debugging, I noticed that the normal being returned was just the raycast reversed. After searching online, I stumbled onto the note in the docs that this is normal behaviour if the raycast begins inside a collider. I figured this was the issue, since I was starting the ray at the point of collision. But even when I move it away from the surface, it still gives me the same result. I've tried moving it away a variety of distances to no success.

My code for the raycasting is as follows:

 //This is inside an OnCollisionEnter2D method
 //transform.position is the position of the projectile, which will be at the point of collision.
 //The projectile is rotated in the direction of travel, and since this is 2D, transform.right is
   the "forward" vector.
 Ray2D ray = new Ray2D(transform.position + -transform.right, transform.right);
 RaycastHit2D collidedSurfaceHit = Physics2D.Raycast(ray.origin, ray.direction, Mathf.Infinity);
 Debug.DrawRay(ray.origin, ray.direction * 5.0f, Color.blue, 10.0f); //Draw initial raycast
 Debug.DrawRay(transform.position, collidedSurfaceHit.normal * 5.0f, Color.red, 10.0f); //Draw surface normal
 float angleBetweenCollisionAndNormal = Vector2.Angle(transform.position, collidedSurfaceHit.normal);

A couple of images that demonstrate what I'm talking about:

The Initial Raycast: alt text

The RaycastHit2D Normal: alt text

Does anybody know what's going on here?

initial-raycast-scaled.png (242.9 kB)
raycasthit2d-normal-scaled.png (224.9 kB)
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
Best Answer

Answer by DEADTERMINATOR · Jun 22, 2017 at 08:37 PM

Feeding the exact layers I want to consider into the raycast seemed to fix it. I don't know what collider(s) the raycast was beginning inside of, but apparently there was something.

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

108 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

Related Questions

How to Raycast 2D Diagonally instead of Horizontal on a Platformer game. 0 Answers

Adding some offset value for RayCast 2D but what is the distance unit? 0 Answers

2D Platformer Shooting - Raycast Issue 0 Answers

One 2D Raycast Not Stopping Even Though Others Do? 0 Answers

Throw a object in the direction of the mouse 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