Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 14 Next capture
2021 2022 2023
2 captures
12 Jun 22 - 14 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
1
Question by Tubsiwub · Jan 23, 2018 at 01:36 AM · uirecttransformoverlaprectcontains

Rect.Contains and Rect.Overlap always return true

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 using UnityEngine.EventSystems;
 
 public class CheckOverlap: MonoBehaviour 
 { 
     RectTransform rectTransform;
     public RectTransform otherRect;
 
     void Start () 
     {
         rectTransform = GetComponent<RectTransform> ();
     }
 
     void Update () 
     {
         if (otherRect.rect.Contains(rectTransform.rect.center))
         {
             print ("Contains");
         }
 
         if (otherRect.rect.Overlaps(rectTransform.rect))
         {
             print ("Overlaps");
         }
     }
 }

..

..

This is the only code, and the two Rects I'm comparing are newly generated UI Images. One has the script and sets the other as "otherRect".

It just spams "True" regardless of where the Rects are from scene start.

Comment
Add comment · Show 2
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
avatar image Tubsiwub · Jan 23, 2018 at 01:37 AM 0
Share

alt text

asdasd.png (168.7 kB)
avatar image lassade · Jan 23, 2018 at 03:07 AM 0
Share

Can you print the values of otherRect.rect and rectTransform.rect

1 Reply

· Add your reply
  • Sort: 
avatar image
4
Best Answer

Answer by lassade · Jan 23, 2018 at 03:12 AM

Like I was suspecting the RectTransform.rect is in local space this means that the center will be always Vector3.zero. Try this fucntion:

 Rect GetWorldSapceRect(RectTransform rt)
 {
     var r = rt.rect;
     r.center = rt.TransformPoint(r.center);
     r.size = rt.TransformVector(r.size);
     return r;
 }

Edit: This code does not allow for any kind of rotation between the rectangles since it's an axis aligned structure. To support that kind of thing you may want to use Physics2D to avoid any crazy maths.

Using Colliders2D inside your UI can be tricky but is doable.

Comment
Add comment · Show 2 · 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
avatar image Tubsiwub · Jan 23, 2018 at 06:25 PM 0
Share

Thanks for the reply. I didn't even think to check for that as it seems incredibly stupid that there would be public access to an object's Rect properties when they will always return zero.

Checking that confirms it, so I'll be using your solution.

avatar image Eltayeb · Feb 25, 2021 at 10:09 AM 1
Share

You my friend are legend, you have no idea how much i want to thank you.

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

127 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

Related Questions

Unity UI Rect 0 Answers

How to change the Top and Bottom (rect.yMin and yMax) properties of a rectTransform, in a script? 2 Answers

Fill empty space in parent in UI Layout 1 Answer

How to avoid UI flicker on first frame 0 Answers

anchoredPosition in mechanim locks my axis 1 Answer


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