What is the algorithm to assign to transform.right?

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?

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: