• 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 radonthetyrant · Jun 29, 2016 at 03:58 PM · cameragameobjectworldspacescreentoworldpoint

Screen to World Position: Can't seem to get it right

Hello,

this seems to be a simple problem, but for some reason the functions don't behave as I expect. Maybe someone could help me with it.

I want to translate two points at the edge od the screen to world space, as pictured here:

alt text

So I enter the blue and orange dot's position (Vector2 x is 0-pixelWidth, y is 0-pixelHeight) and want to receive the Vector3 world coordinates as indicated by the arrows. I tried playing around a bit by creating debug objects and positioning them using the Camera.main.ScreenToWorld() method. But both min and max objects are positioned exactly where the camera game object is, which doesn't seem to be correct.

Here is the code:

 void Update()
     {
         Camera cam = Camera.main;
         Vector3 cameraOrigin = cam.transform.position;
         int screenHalfWidth = Mathf.FloorToInt(cam.pixelWidth * 0.5f);
         int screenHalfHeight = Mathf.FloorToInt(cam.pixelHeight * 0.5f);
         bool boundsChanged = false;
 
         // Debug Bowl
         Vector2 screenMin = Vector2.zero;
         Vector2 screenMax = new Vector2(cam.pixelWidth, cam.pixelHeight);
 
         Vector3 worldMin = cam.ScreenToWorldPoint(screenMin);
         Vector3 worldMax = cam.ScreenToWorldPoint(screenMax);
 
         DebugBowlMin.transform.position = worldMin;
         DebugBowlMax.transform.position = worldMax;
 //......

With this test code I want to accomplish to position two debug bowls bottom left (min) and top right (max) according to their respective position in world space, similar to what is pictured in the screenshot. How would I be able to do that?

screentoworld.jpg (134.0 kB)
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 TBruce · Jun 29, 2016 at 04:14 PM 1
Share

Taking the two points (blue and orange) why don't you just do this

 Vector3 greenWorldPosition =  Camera.main.ScreenToWorldPoint(blueScreenPosition);
 Vector3 redWorldPosition =  Camera.main.ScreenToWorldPoint(orangeScreenPosition);
avatar image radonthetyrant TBruce · Jun 29, 2016 at 04:22 PM 0
Share

Hi, I tried that, doesn't work.

alt text

Green and Red bowls are positioned at 0/0/0

Code:

     void Update() {
         Camera cam = Camera.main;
         Vector3 cameraOrigin = cam.transform.position;
         int screenHalfWidth = $$anonymous$$athf.FloorToInt(cam.pixelWidth * 0.5f);
         int screenHalfHeight = $$anonymous$$athf.FloorToInt(cam.pixelHeight * 0.5f);
         bool boundsChanged = false;
 
         // Debug Bowl
         Vector2 blueDot = new Vector2(0, cam.pixelHeight);
         Vector2 orangeDot = new Vector2(cam.pixelWidth, screenHalfHeight);
 
         Vector3 greenBowl = cam.ScreenToWorldPoint(blueDot);
         Vector3 redBowl = cam.ScreenToWorldPoint(orangeDot);
 
         DebugBowl$$anonymous$$in.transform.position = greenBowl;
         DebugBowl$$anonymous$$ax.transform.position = redBowl;

greenreddot.png (129.6 kB)

0 Replies

· Add your reply
  • Sort: 

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.

Welcome to Unity Answers

If you’re new to Unity Answers, please check our User Guide to help you navigate through our website and refer to our FAQ for more information.

Before posting, make sure to check out our Knowledge Base for commonly asked Unity questions.

Check our Moderator Guidelines if you’re a new moderator and want to work together in an effort to improve Unity Answers and support our users.

Follow this Question

Answers Answers and Comments

75 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

Related Questions

How to calculate ui image size in world space? 0 Answers

Framing multiple objects from a list along y axis only? 0 Answers

How to prevent duplicated gameObjects with disabled camera? 0 Answers

Camera Editor,Camera Editor 1 Answer

Can't assign camera to variable 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