I have a function in other script, but when I call it from other script and give a GameObject as parameter it gives error.
public Vector3 snapPoint (GameObject GroundObject){
Debug.Log(GroundObject);
List freeCubesList = new List();
GameObject[] freeCubes = null;
List GroundObjectCubesList = new List();
GameObject[] GroundObjectCubes;
List possibleCubesList = new List();
GameObject[] possibleCubes = null;
List localPositionsList = new List();
Vector3[] localPositions = null;
List globalPositionsList = new List();
Vector3[] globalPositions;
List distanceList = new List();
float[] distances = null;
int minIndex; // Shortest distance
GroundObject.transform.position = this.transform.position;
foreach (GameObject gridCube in gridCubesList){
gridTrigger trigger = (gridTrigger) gridCube.GetComponent(typeof(gridTrigger));
if(trigger.isTriggered(GroundObject)){
localPositionsList.Add(this.transform.position - gridCube.transform.position);
localPositions = localPositionsList.ToArray();
GroundObjectCubesList.Add(gridCube);
GroundObjectCubes = GroundObjectCubesList.ToArray();
}
if(trigger.isTriggered(null) != true){
freeCubesList.Add(gridCube);
freeCubes = freeCubesList.ToArray();
}
}
foreach (GameObject current in freeCubes){
foreach(Vector3 localPosition in localPositions){
foreach (GameObject freeCube in freeCubes){
Vector3 globalPosition = freeCube.transform.position + localPosition;
globalPositionsList.Add (globalPosition);
globalPositions = globalPositionsList.ToArray();
if(globalPosition == freeCube.transform.position){
possibleCubesList.Add(freeCube);
possibleCubes = possibleCubesList.ToArray();
}
}
}
}
foreach (GameObject possibleCube in possibleCubes){
distanceList.Add(Vector3.Distance(possibleCube.transform.position, transform.position));
distances = distanceList.ToArray();
}
minIndex = Array.IndexOf(distances, distances.Min());
return possibleCubes[minIndex].transform.position;
}
And in other script:
GroundObject.rigidbody.MovePosition(grid.snapPoint(GroundObject) + speed * Time.deltaTime);
↧









