Search Unity

  1. Get all the Unite Berlin 2018 news on the blog.
    Dismiss Notice
  2. Unity 2018.2 has arrived! Read about it here.
    Dismiss Notice
  3. We're looking for your feedback on the platforms you use and how you use them. Let us know!
    Dismiss Notice
  4. The Unity Pro & Visual Studio Professional Bundle gives you the tools you need to develop faster & collaborate more efficiently. Learn more.
    Dismiss Notice
  5. Improve your Unity skills with a certified instructor in a private, interactive classroom. Learn more.
    Dismiss Notice
  6. ARCore is out of developer preview! Read about it here.
    Dismiss Notice
  7. Magic Leap’s Lumin SDK Technical Preview for Unity lets you get started creating content for Magic Leap One™. Find more information on our blog!
    Dismiss Notice
  8. Want to see the most recent patch releases? Take a peek at the patch release page.
    Dismiss Notice

Physics2D.RaycastNonAlloc() vs Physics2D.RaycastAll()

Discussion in 'Physics' started by sharkyro, May 14, 2018.

  1. sharkyro

    sharkyro

    Joined:
    Mar 15, 2014
    Posts:
    127
    Hello everyone,

    I am using Unity 2018.1.0f2.

    According to the Unity Manual, Physics2D.RaycastNonAlloc() should work just like Physics2D.RaycastAll(), in terms of objects hit.

    I want to hit all 2D objects under the mouse cursor, when the Mouse0 is pressed:
    Code (CSharp):
    1. {
    2.      hits = Physics2D.RaycastNonAlloc(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector3.forward, hit2Ds, 100f, targetLayer);
    3.  
    4.      newHitsVector = Physics2D.RaycastAll(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector3.forward, 100f, targetLayer);
    5. }
    Strangely enough, the code above returns different results for the two Physics2D methods: RaycastAll() returns all objects hit (as expected), but RaycastNonAlloc() will never return more than 1 hit (if it hits something, it always returns 1, no matter how many objects are overlapping under the mouse cursor).

    There are no colliders at the starting point to interfere and the paramaters on both function calls are identical, as you can see. Am I missing something or is there a bug in Physics2D.RaycastNonAlloc()?

    Thank you and Best Regards,
    Alex.
     
  2. LaneFox

    LaneFox

    Joined:
    Jun 29, 2011
    Posts:
    5,918
    What is the size of
    hits2Ds
    and
    hits
    ?

     
    sharkyro likes this.
  3. sharkyro

    sharkyro

    Joined:
    Mar 15, 2014
    Posts:
    127
    Oh my God, I'm blind as a bat sometimes... The array size was supposed to be 10, but I typoed it in as RaycastHit2D[1] and completely missed it.

    That solved it. Many thanks for the help and sorry for troubling you.
     
    LaneFox likes this.