- Home /
What is the algorithm to assign to transform.right?
https://answers.unity.com/questions/585035/lookat-2d-equivalent-.html
I saw this code when I was looking for lookat2D problem.
transform.right = firstEnemy.transform.position - transform.position;
//Debug.Log("1:" + (firstEnemy.transform.position - transform.position));
//Debug.Log("2:"+transform.right);
This line of code is useful, but I don't know his algorithm. why transofrm.right is Vector3?The Debug.log output is also inconsistent. Can someone explain to me the principle of assigning it or the principle of this algorithm?
Answer by eses · Oct 14, 2018 at 02:01 PM
Hi @LeeCarry
"This line of code is useful, but I don't know his algorithm. why transofrm.right is Vector3?"
Transform itself is a class, and rotation is Quaternion value. Transform.right is a shortcut, you can use it to get or alter your transform's rotation using direction vector. There's also transform.up and transform.forward, these all take a Vector3, and it in turn is used to change transform's rotation:
Debug.Log("My rotation: " + transform.rotation);
// My rotation: (0.0, 0.0, 0.0, 1.0)
// Vector along z-axis
var direction = new Vector3(0,0,1f);
transform.right = direction;
Debug.Log("My rotation: " + transform.rotation);
// My rotation: (0.0, -0.7, 0.0, 0.7)
Minus operation is just a way to get a vector pointing towards some other object. If you have object A and B, you can substract your transform's position from other's position. You'll end up with vector pointing to direction of other object, which you can use to rotate your object by for example setting it's transform.forward, similar manner to transform.right:
// Direction vector towards other object (relative to this transform):
var directionTo = (other.transform.position - transform.position).normalized;
// align forward axis to direction:
transform.forward = directionTo;
See documentation for more info:
https://docs.unity3d.com/ScriptReference/Transform-right.html
oh my god,$$anonymous$$y brain is not quite clear lately.This is vector normalization to get direction.The original code omitted “normalized”, so I didn't think of it. may bad, i'm foolish.I really want to delete the question,let it go at that,Leave it to those who need it. XD
Finally, thank you very much for taking the time to answer questions. :)
Your answer
Follow this Question
Related Questions
Change a Transform to Aim to the center of a Collider. Not (0,0,0) 2 Answers
How to use x axis for transform.LookAt 3 Answers
Rigidbody to follow player around 1 Answer
transform.LookAt boundaries 1 Answer
How to prevent Z axis rotation ? 0 Answers