Assets/Gravitation_Simulator.cs(23,47): error CS1061: Type `UnityEngine.GameObject' does not contain a definition for `Length' and no extension method `Length' of type `UnityEngine.GameObject' could be found.

I am trying to find the .Length of an array of GameObjects, but it says there is no definition for Length.

using UnityEngine;
using System.Collections;

public class Gravitation_Simulator : MonoBehaviour 
{
	public static Vector3 getRelativePosition(Transform origin, Vector3 position) {
		Vector3 distance = position - origin.position;
		Vector3 relativePosition = Vector3.zero;
		relativePosition.x = Vector3.Dot(distance, origin.right.normalized);
		relativePosition.y = Vector3.Dot(distance, origin.up.normalized);
		relativePosition.z = Vector3.Dot(distance, origin.forward.normalized);
		
		return relativePosition;
	}

	public GameObject Grav_Markers;
	void Start () 
	{
		Grav_Markers = GameObject.FindGameObjectsWithTag ("Grav_Marker");
	}
	void Update () 
	{
		for (int i=0;i < Grav_Markers.Length; i = i + 1)
		{
			gameObject.rigidbody.AddForce(getRelativePosition (gameObject.transform.position, Grav_Markers*.transform.position));*
  •  }*
    
  • }*
    }

2 Answers

2

Your variable is just a GameObject, not a GameObject array. Add these: []

This is because you define Grav_Markers as a single GameObject instead of an array of GameObjects.

public GameObject Grav_Markers;

should be

public GameObject[] Grav_Markers;

Also, I would recommend not using a public in this case since you aren’t assigning them in the inspector.

Thanks a bunch! Was suspecting public wasn't necessary, but saw it in another snippet of code somewhere so I added it in as a precaution.