- 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
![](https://koobas.hobune.stream/wayback/20220613030441im_/https://answers.unity.com/themes/thub/images/avi.jpg)
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