Making an Object Rotate to Face Another Object

Alright. So, in the project I’m working on, I have an object that I want to turn to face another object. Simply put: how. Although it seems like a good option, I can’t get transform variables to work. Also, for extra credit, can I make it reference a different object (with the same name) in each scene? Alternatively, the objects being rotated towards are immobile, so making the object rotate towards a given point would work as well. Thanks!

2 Answers

2

var damping:int=2;
var target:Transform;

var lookPos = target.position - transform.position;
  lookPos.y = 0;
  var rotation = Quaternion.LookRotation(lookPos);
  transform.rotation = Quaternion.Slerp(transform.rotation, rotation, Time.deltaTime * damping); 

someone else came up with the code but it worked for me

Worked perfectly! Thanks

This solution would have taken me forever to figure out. Thank you!

Take a look at Transform.LookAt

http://unity3d.com/support/documentation/ScriptReference/Transform.LookAt.html

Add a rigidbody to your object and check off freeze rotation under Constraints for x or y.

@FTheCloud, this won't work: rigidbody constraints only affect physics.

I'm having a similar problem. I want it to only rotate on the Y-axis.

If you want the effect only on the Y-axis, simply use the function, then after it, set the X- and Z-axis to whatever it is you want them to stay. That should work