Search Unity

  1. Full schedule for #UniteBerlin is now available! Featuring talks on our roadmap, hands-on labs and much more! Check it out!
    Dismiss Notice
  2. Unity 2018.1 has arrived! Read about it here
    Dismiss Notice
  3. Scriptable Render Pipeline improvements, Texture Mipmap Streaming, and more! Check out what we have in store for you in the 2018.2 Beta.
    Dismiss Notice
  4. ARCore is out of developer preview! Read about it here.
    Dismiss Notice
  5. 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
  6. 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:
    122
    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,700
    What is the size of
    hits2Ds
    and
    hits
    ?

     
    sharkyro likes this.
  3. sharkyro

    sharkyro

    Joined:
    Mar 15, 2014
    Posts:
    122
    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.