ERROR: missing field exception

I’m making a TD game, but there is a error that occurs every time I press play and a cube with an enemy tag enters the trigger collider - what the range of my tower is.

MissingFieldException: UnityEngine.Vector3.position
Boo.Lang.Runtime.DynamicDispatching.PropertyDispatcherFactory.FindExtension (IEnumerable`1 candidates)
Boo.Lang.Runtime.DynamicDispatching.PropertyDispatcherFactory.Create (SetOrGet gos)
Boo.Lang.Runtime.DynamicDispatching.PropertyDispatcherFactory.CreateGetter ()
Boo.Lang.Runtime.RuntimeServices.DoCreatePropGetDispatcher (System.Object target, System.Type type, System.String name)
Boo.Lang.Runtime.RuntimeServices.CreatePropGetDispatcher (System.Object target, System.String name)
Boo.Lang.Runtime.RuntimeServices+c__AnonStorey17.<>m__C ()
Boo.Lang.Runtime.DynamicDispatching.DispatcherCache.Get (Boo.Lang.Runtime.DynamicDispatching.DispatcherKey key, Boo.Lang.Runtime.DynamicDispatching.DispatcherFactory factory)
Boo.Lang.Runtime.RuntimeServices.GetDispatcher (System.Object target, System.String cacheKeyName, System.Type cacheKeyTypes, Boo.Lang.Runtime.DynamicDispatching.DispatcherFactory factory)
Boo.Lang.Runtime.RuntimeServices.GetDispatcher (System.Object target, System.Object args, System.String cacheKeyName, Boo.Lang.Runtime.DynamicDispatching.DispatcherFactory factory)
Boo.Lang.Runtime.RuntimeServices.GetProperty (System.Object target, System.String name)
UnityScript.Lang.UnityRuntimeServices.GetProperty (System.Object target, System.String name)

And this is my script (javaScript):

var bullet : GameObject;

//tower objects
var frame : GameObject;
var barrel : GameObject;
var muzzlePositions : Transform[];

//Tower reload
var reloadTime : float;
var firePauseTime : float = 0.5f;
private var nextFireTime : float;
private var nextMoveTime : float;

//rest
var building : boolean = false;	//true while building
var shootSound : AudioClip;

//positions en rotations
var rotationSpeed : int;
private var myTarget : Transform;
private var horizontalRotation : Quaternion;
private var verticalRotation : Quaternion;

function FixedUpdate () {
	
	if (!building) {
		if (myTarget) {
			if (Time.time >= nextMoveTime) {
				Aim(myTarget.position);
			}
			
			if (Time.time >= nextFireTime) {
				Fire();
			}
		}
	}
	
}

function OnTriggerEnter (other : Collider) {
	
	if (other.tag == "enemy") {
		myTarget = other.gameObject.transform;
		nextFireTime = Time.time + reloadTime;
	}
	
}

function OnTriggerExit (other : Collider) {
	
	if (other.gameObject.transform == myTarget) {
		myTarget = null;
	}
	
}

function Aim (targetPosition : Vector3) {
	
	horizontalRotation = Quaternion.LookRotation(Vector3(targetPosition.position.x, 0, targetPosition.position.z));
	verticalRotation = Quaternion.LookRotation(Vector3(0, targetPosition.position.y, 0));
	
	frame.rotation = Quaternion.Lerp(frame.rotation, horizontalRotation, Time.deltaTime * rotationSpeed);
	barrel.rotation = Quaternion.Lerp(barrel.rotation, verticalRotation, Time.deltaTime * rotationSpeed);
	
}

function Fire () {
	
	//audio.Play(shootSound);	<- this won't work because 'no apropiate version'
	nextFireTime = Time.time + reloadTime;
	nextMoveTime = Time.time + firePauseTime;
	
	for (muzzles in muzzlePositions) {
		Instantiate(bullet, muzzles.position, muzzles.rotation);
	}
	
}

Hi, at a glance I can see an error in your “Aim” function that could be throwing that error. The error is thrown because you are trying to access a Vector’s “position” property - which is does not have. Here is the issue I can see:

function Aim (targetPosition : Vector3)
{
    horizontalRotation = Quaternion.LookRotation(Vector3(targetPosition.position.x, 0, targetPosition.position.z));
    verticalRotation = Quaternion.LookRotation(Vector3(0, targetPosition.position.y, 0));
 
    frame.rotation = Quaternion.Lerp(frame.rotation, horizontalRotation, Time.deltaTime * rotationSpeed);
    barrel.rotation = Quaternion.Lerp(barrel.rotation, verticalRotation, Time.deltaTime * rotationSpeed);
}

You are trying to get “targetPosition.position” but I think you already have the position at this point, so change the lines to this:

    horizontalRotation = Quaternion.LookRotation(Vector3(targetPosition.x, 0, targetPosition.z));
    verticalRotation = Quaternion.LookRotation(Vector3(0, targetPosition.y, 0));

You could change targetPosition’s type to be a transform also. I’ve only skimmed over it. Hope that helps. =)