- Home /
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.
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;MissingFieldException: UnityEngine.Vector3.position
//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); }
}
Answer by Chris_Dlala · Jun 24, 2014 at 10:44 AM
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. =)
Could you please select this answer if it helped. Thank you =D
Your answer
Follow this Question
Related Questions
ERROR: Missing field exception?! 1 Answer
The name 'Joystick' does not denote a valid type ('not found') 2 Answers
Melee Script Help 1 Answer
Tracking Down GUI Errors 0 Answers
I can do this in JS or not ??? 2 Answers