- 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).
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                