I'm trying to make a TextMesh appear when ever an enemy prefab is hit.
I currently have this functionality working. However, the text doesn't face the direction the players camera is looking.
At the moment my OnCollisionEnter method contains the following line of code:
GameObject _go = (GameObject)Instantiate(_hitPrefab, collision.gameObject.transform.position, Camera.mainCamera.transform.rotation);
This line happily creates my TextMesh whenever my enemy is hit. I know my issue has something to do with my rotation quaterion, but I have no idea what pass in so it faces my camera. As you can see, I tried setting it Quaterion.Idenitiy thinking it'll show the same way as the enemy it's associated to, but that doesn't work either.
Each time the textmesh appears, its back to front for the player and at a slight angle.
Could someone please help me in getting it so the score always faces the players camera no matter what way he is facing?
Answer
You are simply copying the main camera's rotation in your code snippet, try this method:
GameObject _go = (GameObject)Instantiate(_hitPrefab,
collision.gameObject.transform.position, Quaternion.identity);
_go.transform.LookAt(Camera.main.transform);
http://docs.unity3d.com/Documentation/ScriptReference/Transform.LookAt.html
You should also have a look into Quaternion.LookRotation.
http://docs.unity3d.com/Documentation/ScriptReference/Quaternion.LookRotation.html
Edit:
This is a very useful community script for camera facing, the results may be slightly better: http://wiki.unity3d.com/index.php?title=CameraFacingBillboard
No comments:
Post a Comment