- Home /
how to have an object positioned relative to the screen(like a button)
Hello! How can I make this smoother
transform.rotation = cam.transform.rotation;
var ray : Ray = Camera.main.ScreenPointToRay (pos);
var pos2 : Vector3 = ray.GetPoint(dist);
ob.transform.position = pos2;
I am basically trying to make 3d objects as buttons relatively placed about the screen like a gui button would be. This script works but it is jerky whenever the screen is moved/rotated. Is there a cleaner/more efficient way to do this? Thanks
Are you calling this positioning code each Update for every button? You could try making your 3D UI elements children of the camera (gameObject.parent = camera) then position them appropriately. Then you would't need to reposition manually each frame.
Note that if the camera FOV changes you probably would need to reposition the UI elements.
Answer by bobatismo · Jul 19, 2014 at 07:00 AM
Wouldn't it be easier to simply use a GUITexture? Create your GUITexture, and you'll see it (in game mode) right on the screen the way you want it. I made a little conversation system in this way. When I click on a character, I enable the dialogue GUITexture, and depending on who I've clicked on, load the resources for that character's portrait. I use OnGUI to display buttons linked to my dialogue options. I launch specific lines of dialogue based on which buttons are clicked, and based on what state the conversation is in. If you're still stuck, try watching this video. It made it super easy for me.
Your answer
Follow this Question
Related Questions
Clicking Trigger 1 Answer
Mouse.position from center of player 1 Answer
gui position of Screen relative position 2 Answers
Second Camera Position on Viewport to UI Element Position on Screen 2 Answers