- Home /
Instantiate Object position C#, not visible after new pos
Hello, so I have a problem with the visibility of my instantiated guiText, the text is showing up aslong as i dont change the position on the instantiate. It works fine with the following code and the guitext spawns at 0,0,0 position:
void SpawnObject(float points , float x , float y ){
Transform gui = Instantiate (floatText) as Transform;
gui.guiText.text = "+" + points.ToString();
gui.guiText.material.color = new Color(1,1,1,1.0f);
}
But once I change the Transform line into the following:
void SpawnObject(float points , float x , float y ){
Vector3 mousePosition = Input.mousePosition;
Transform gui = Instantiate (floatText, mousePosition, transform.rotation) as Transform;
gui.guiText.text = "+" + points.ToString();
gui.guiText.material.color = new Color(1,1,1,1.0f);
}
After this change the text does appear in my hierarchy at the desired position, but for some reason it is not visible when i change the position. Any thoughts?
Answer by robertbu · Apr 16, 2014 at 11:23 PM
guiText objects live in Viewport space. Viewport coordinates start in the lower left of teh screen at (0,0), and go to the upper right of the screen with a value of (1,1). Input.mousePosition are in Screen coordinates, which start at (0,0) in the lower left, and goes to (Screen.width, Screen.height) in the upper right. So to fix your code, insert between lines 2 and 3:
mousePosition = Cameara.main.ScreenToViewportPoint(mousePosition);
Your answer
Follow this Question
Related Questions
Distribute terrain in zones 3 Answers
Emerging Gap when moving my "Snake" 1 Answer
Moving A Sprite Then Returning It To Position? 2 Answers
No movement when animation plays (2d) 1 Answer
Equivelant of GUI.DrawSprite() ? 0 Answers