- Home /
Transport unknown amout of objects with GameObject array
I have 1 moving square, that is moving 1f per second. I want to make it "collide" with other-typed square that does nothing, There cloud be multiple of these squares. Here is code:
public static int AbleCount;
public GameObject[] MoveAbles = new GameObject[AbleCount];
public float facingDirection;
for (int i = 0; i < AbleCount; i++)
{
if (transform.position == MoveAbles[i].transform.position)
{
switch (facingDirection)
{
case 0:
MoveAbles[i].transform.position = new Vector2(MoveAbles[i].transform.position.x + 1, MoveAbles[i].transform.position.y);
break;
case 1:
MoveAbles[i].transform.position = new Vector2(MoveAbles[i].transform.position.x, MoveAbles[i].transform.position.y + 1);
break;
case 2:
MoveAbles[i].transform.position = new Vector2(MoveAbles[i].transform.position.x, MoveAbles[i].transform.position.y - 1);
break;
case 3:
MoveAbles[i].transform.position = new Vector2(MoveAbles[i].transform.position.x - 1, MoveAbles[i].transform.position.y);
break;
default:
Debug.Log("Bad facing direction "+facingDirection);
break;
}
}
}
Ignores blocks.
Here's my old working code:
public float facingDirection;
public GameObject MoveAble;
if (transform.position == MoveAble.transform.position)
{
switch (facingDirection)
{
case 0:
MoveAble.transform.position = new Vector2(MoveAble.transform.position.x + 1, MoveAble.transform.position.y);
break;
case 1:
MoveAble.transform.position = new Vector2(MoveAble.transform.position.x, MoveAble.transform.position.y + 1);
break;
case 2:
MoveAble.transform.position = new Vector2(MoveAble.transform.position.x, MoveAble.transform.position.y - 1);
break;
case 3:
MoveAble.transform.position = new Vector2(MoveAble.transform.position.x - 1, MoveAble.transform.position.y);
break;
default:
Debug.Log("Bad facing direction "+facingDirection);
break;
}
}
Everyone who will somehow solve this problem thanks (finking a gramatic mistake makes sence, I am not english) I DON'T KNOW WHY THE CODE IS SO MESSED UP, sorry.
I don't think that it solves your problem, but if facingDirection ranges from 0 to 3, and they are whole numbers, you could use an int instead of a float.
Also, if you are populating the MoveAbles array through the inspector, you don't need to use = new GameObject[AbleCount].
how the f does nobody here manage to properly use code-tags? more than 50% of code snippets posted have half the code in plain text above the tagged code. Please please please check that your code is readable.
Your answer
Follow this Question
Related Questions
Use an objects (from array) position to focus a camera on 3 Answers
Cannot convert 'UnityEngine.Collider[]' to 'UnityEngine.gameObject[]' using OverlapSphere 3 Answers
Detection if a GameObject is below you or next to you? 1 Answer
Need help with an array. - C# 3 Answers
arrays / textures help 1 Answer