- Home /
The question is answered, right answer was accepted
Problem setting references to GetComponent Script function return values
Hello! I am trying to get a vector2 from a pacMan script function so I can find the vector between pacman and an enemy.
I want to subtract pacman's position from an enemy position.
Here is my code from the enemy class:
private Vector2 pacPos;
private Vector2 position;
private GameObject pacman;
private PlayerScript pacManScript;
privateVector2 v;
void Awake ()
{
pacman=GameObject.Find("PacMan");
pacManScript=pacman.GetComponent<PlayerScript>();
}
void Start ()
{
position=new Vector2(1,1);
pacPos= pacManScript.getPosition();
v=pacPos-position;
print("distance between pacman which is "+ pacPos+ " and inky's "+ position+ "is " + v);
}
Here it is not working, since the pacPos reference gets a wrong vector value.
When I do this though it works:
print("distance between pacman which is "+ pacManScript.getPosition()+ " and inky "+ position+ "is "+ (pacManScript.getPosition()-position));
Here I am not using a reference.
I was wondering how come this is the case? It seems that my pacPos reference to pacManScript.getPosition() doesent work the way I want it to, it gets assigned a wrong vector.
Thank you...I really want to understand GetComponent.
Take Care.
What value is wrong? In what way is it wrong? If anything, you might have a subtle error in your math, or the getPosition()
function you wrote.
In the print statements I dont mean distance, I mean vector.
@rutter: The pacPos is wrong because it gets a vector of (0,0) ins$$anonymous$$d of what it actually is (0,1).
The getPosition() function is just this, it is inside another class:
public Vector2 getPosition()
{
return position;
}
When I just go straight for it and do pac$$anonymous$$anScript.getPosition(), it gets the right vector. I just can't seem to set a reference to the right vector, but I can get the vector if I just go straight for it.
Answer by NormN · May 28, 2014 at 08:07 PM
I totally understand now! I was displaying values at the same time they were being changed, so I was displaying the old values (this has to do with two start methods, each in a different class).