- Home /
Changing transform.localScale of a prefab in the script not working. Help pls!
Hi! I'm making a university project, and I would like to create an "AutoBattle" game, where AI fights on its own and you don't have to do anything. For the moment, I've managed to spawn units in 2 different teams (RightTeam and LeftTeam), who fight against each other.
The problem is, I use the same Prefab for both teams, so both teams units are looking to the left. This means that the LeftTeam's units, are actually looking to the left all the time, so they move and attack backwards, so I'd like to flip them so they look to the RightTeam's units. I've made some tests, and the only solution I found was, if I manually change in the inspector the Transform.Scale.X to same value but negative, the unit flips perfectly and looks to the correct direction. However, in the C# script (which the Prefab has as component), even if I write the following code, the unit doesn't flip:
public void Setup(Team team, Node currentNode) {
myTeam = team;
if (myTeam == Team.Team1) {
Vector3 lTemp = this.transform.localScale;
lTemp.x *= -1;
this.transform.localScale = lTemp;
//This Debug prints the value correctly as negative, but in the game the unit doesn't flip
Debug.Log(this.transform.localScale.x);
}
//Other irrelevant code
this.currentNode = currentNode;
transform.position = currentNode.worldPosition;
currentNode.SetOccupied(true);
healthBar = Instantiate(barPrefab, this.transform);
healthBar.Setup(this.transform, this.healthBar);
}
Does anyone have an idea of why aren't the units flipping correctly? Thank you very much! :)
Answer by suIly · Aug 13, 2020 at 11:38 AM
Is the script on a child of the Team? If it is, then try putting the script on a parent of the Team object