- Home /
overlapping of enemy
hi there, i have script that has 2 public array variables called spawnPoints and spawnObjects, i have 9 spawnPoints and 4 spawnObjects. These 4 spawnObjects are placed on 4 spawnPoints. Here what i am doing is whenever i press the mouse button i m changing the position of spawnObjects to other spawnPoints, its working fine but the spawnObjects are overlapping some times.
please can anyone rewrite this code
using UnityEngine;
using System.Collections;
public class Forward : MonoBehaviour
{
public GameObject[] spawnPoint;
private GameObject spawn;
public GameObject[] spawnObjects;
private GameObject objectSpawn;
void Update ()
{
if (Input.GetMouseButtonDown (0)) {
int a = Random.Range (0, spawnPoint.Length);
int b = Random.Range (0, spawnObjects.Length);
spawn = spawnPoint [a];
objectSpawn = spawnObjects [b];
objectSpawn.transform.position = spawn.transform.position;
}
}
}
Answer by LawgiverSS2 · Jul 30, 2015 at 05:00 AM
To avoid duplicate random values, generate a random sequence between 0 and spawnPoints.Length (exclusive).
Use a shuffle algorithm such as Fisher Yates to generate your sequences:
for (int i = length - 1; i > 0; i--)
{
int j = random.Next(i + 1);
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
Answer by NeverHopeless · Jul 30, 2015 at 06:48 AM
A possibility to fix this problem is to take an array for currently available positions for spawining, say AllowedPositions
.
So, when the game starts:
AllowedPositions = new int[] { 0,1,2,3,4,5,6,7,8 }
Now run:
int a = Random.Range (0, AllowedPositions.Length)
and pick ath element from AllowedPositions
and remove it from the array.
int randomAvailablePosition = AllowedPositions[a];
e.g., Random.Range
returns 3
, then:
AllowedPositions = new int[] { 0,1,2, 4,5,6,7,8 }
Since 3
is not in the AllowedPositions
array so you can not pick this position again and overlapping will not occur.
A better option is to use List<T>
since manipulation would be easy.
Your answer
![](https://koobas.hobune.stream/wayback/20220611233549im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
How to make different animations affect different parts of the object? 2 Answers
Using a transparent shader and I'm getting graphical glitches with textures overlapping each other 1 Answer
Overlapping sprites in Unity2D 1 Answer
check box overlap / colliders in edit mode 0 Answers
Grab and drag object in physical and realistic way 2 Answers