Search Unity

  1. Improved Prefab workflow (includes Nested Prefabs!), 2D isometric Tilemap and more! Get the 2018.3 Beta now.
    Dismiss Notice
  2. The Unity Pro & Visual Studio Professional Bundle gives you the tools you need to develop faster & collaborate more efficiently. Learn more.
    Dismiss Notice
  3. Let us know a bit about your interests, and if you'd like to become more directly involved. Take our survey!
    Dismiss Notice
  4. Improve your Unity skills with a certified instructor in a private, interactive classroom. Watch the overview now.
    Dismiss Notice
  5. 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. if(Input.GetMouseButton(0))
    2. {
    3.      hits = Physics2D.RaycastNonAlloc(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector3.forward, hit2Ds, 100f, targetLayer);
    4.  
    5.      newHitsVector = Physics2D.RaycastAll(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector3.forward, 100f, targetLayer);
    6. }
    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:
    6,074
    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.