Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 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
0
Question by fulcanmal · Oct 04, 2010 at 02:07 PM · logictransformpointinversetransformpoint2d-tutorial

TransformPoint and InverseTransformPoint

In the code below, what values are the first two variables being set to, and why?

This code is attached to the main character in the Unity 2D side scroller tutorial. For the purposes of this question assume the following Vector3 values:

Active Platform: (2,1,0)

Player: (1,2,0) The player is standing just on the edge of the platform, therefore his x coordinate is slightly off.

var newGlobalPlatformPoint = activePlatform.TransformPoint(activeLocalPlatformPoint);
activeLocalPlatformPoint = activePlatform.InverseTransformPoint (transform.position);
activeGlobalPlatformPoint = transform.position;
var moveDistance = (newGlobalPlatformPoint - activeGlobalPlatformPoint);
transform.position = transform.position + moveDistance;

Comment
Add comment
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

2 Replies

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

Answer by Loius · Oct 04, 2010 at 03:50 PM

We start with

transform.position = (1,2,0)
activePlatform.position = (2,1,0)

we then know that

activeLocalPlatformPoint = (-1,1,0)

that is, the transform's center relative to the platform's center (TransformPoint) and

activeGlobalPlatformPoint = (1,2,0)

that is, the global position of platform.position + aLPP

We'll now move the platform up one unit -

activePlatform.position = (2,2,0)

Then, going through the function:

var newGlobalPlatformPoint = activePlatform.TransformPoint(activeLocalPlatformPoint);
// nGPP = aP.TP(aLPP) : nGPP = (2,2,0).TP( (-1,1,0) ) : nGPP = (1,3,0)
activeLocalPlatformPoint = activePlatform.InverseTransformPoint (transform.position);
// inverseTransformPoint converts world coordinates to local
// aLPP = aP.ITP( t.p ) : aLPP = aP.ITP( (2,2,0) ) : aLPP = (-1,0,0)
activeGlobalPlatformPoint = transform.position;
// aGPP = (1,2,0)
var moveDistance = (newGlobalPlatformPoint - activeGlobalPlatformPoint);
// mD = ( (1,3,0) - (1,2,0) ) = (0,1,0)
transform.position = transform.position + moveDistance;

TransformPoint moves a point from world coordinates to an object's local coordinates (including rotation); InverseTransformPoint moves a point from local coordinates (including rotation) to world.

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 fulcanmal · Oct 04, 2010 at 06:37 PM 0
Share

Wait...theres a problem. You list activLPP as equaling (-1,0,0) but in the newGPP you list it as (-1,1,0). Where does the extra y coordinate come from? Without out it the player would not move relative to the platform.

avatar image Loius · Nov 19, 2010 at 07:02 AM 1
Share

newGPP = (something based on activeLPP); the next line is (activeLPP = something based on position). It is -1,1,0 in line 1, but then the second line overwrites it.

avatar image
1

Answer by MaDDoX · Sep 29, 2012 at 08:45 PM

Actually it's the opposite to what Loius said. The default values, as shown in the inspector, are local. Thus "transforming" mean changing to world and "inverse transforming" changing back to the default, local coordinates. From the docs:

Transform.TransformPoint: Transforms the position x, y, z from local space to world space.

Transform.InverseTransformPoint: Transforms the position x, y, z from world space to local space. The opposite of Transform.TransformPoint.

Comment
Add comment · 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

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

1 Person is following this question.

avatar image

Related Questions

MeshFilter, World & Local Coordinates and InverseTransformPoint() 9 Answers

Round the cube consists of planes (Planetary terrain's chunks proplem).A problem with inverseTransformPoint and TransformPoint functions 1 Answer

Place and size a cube at farplane of camera 1 Answer

TransformPoint and InverseTransformPoint: Moving Platform Logic 1 Answer

TransformPoint returns wrong points? 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