- Home /
BCE0004: Ambiguous reference 'gameObject': TrainingDummyPart.gameObject, UnityEngine.Component.gameObject.
The title says it all. What does it mean?
I get the error when ever dp is called but i have it listed as a variable..any clues?
function Destruct(target : int) { var dp : TrainingDummyPart = dummyParts[target];
if(dp.gameObject == null) return;
dp.shootsTaken = shootsToDestroyPart;
var go : GameObject;
if(dp.gameObject.transform.parent != null)
{
if(dp.gameObject.name.Contains("head") || dp.gameObject.name.Contains("neck"))
{
if(!dead)
{
dead = true;
TrainingStatistics.dummies++;
GunEffects(false);
//audio.PlayOneShot(dieSound);
Destruct(4);
//animation.CrossFade("dum_death");
}
}
if(dp.gameObject != weapon)
{
dp.gameObject.transform.parent = null;
dp.gameObject.active = false;
for(var i : int = 0; i < dp.brokeParts.length; i++)
{
go = dp.brokeParts[i];
if(go.transform.parent == null) continue;
InitializeMeshCollider(go);
DestroyPart(go, false);
}
for(var j : int = 0; j < dp.siblings.length; j++)
{
go = dp.siblings[j];
if(go == null) continue;
if(go.transform.parent == null) continue;
if(go.name.Contains("head"))
{
dead = true;
TrainingStatistics.dummies++;
//audio.PlayOneShot(dieSound);
GunEffects(false);
}
if(go == weapon)
{
canShoot = false;
GunEffects(false);
}
DestroyPart(go, false);
}
Destroy(dp.gameObject);
}
else
{
canShoot = false;
GunEffects(false);
if(weapon.transform.parent != null)
{
DestroyPart(weapon, false);
}
}
}
else
{
if(dp.gameObject != weapon)
{
dp.gameObject.active = false;
for(i = 0; i < dp.brokeParts.length; i++)
{
go = dp.brokeParts[i];
InitializeMeshCollider(go);
DestroyPart(go, false);
}
Destroy(dp.gameObject);
}
}
}
function Hit(hit : RaycastHit, target : int, damage : int)
{
if(!running)
{
running = true;
}
var dp : TrainingDummyPart = dummyParts[target];
if(dp.gameObject == null) return;
dp.shootsTaken += damage;
var go : GameObject;
if(dp.gameObject.transform.parent != null)
{
if(!dead)
{
if(dp.dummyPart == DummyPart.CHEST)
{
var dir : Vector3 = hit.point - transform.position;
if(Vector3.Dot(dir, transform.right) > 0)
{
TrainingStatistics.Register(dp.dummyPart);
}
else
{
TrainingStatistics.Register(DummyPart.HEART);
}
}
else
{
TrainingStatistics.Register(dp.dummyPart);
}
}
if(dp.shootsTaken == shootsToDestroyPart - 1)
{
if(dp.gameObject != weapon)
{
enableFailEffect = true;
}
}
else if(dp.shootsTaken >= shootsToDestroyPart)
{
if(dp.gameObject.name.Contains("head") || dp.gameObject.name.Contains("neck"))
{
if(!dead)
{
dead = true;
TrainingStatistics.headShoot++;
TrainingStatistics.dummies++;
//audio.PlayOneShot(dieSound);
GunEffects(false);
if(state != 0)
{
Hit(hit, 4, shootsToDestroyPart);
}
//animation.CrossFade("dum_death");
}
}
if(dp.gameObject != weapon)
{
dp.gameObject.transform.parent = null;
dp.gameObject.active = false;
for(var i : int = 0; i < dp.brokeParts.length; i++)
{
go = dp.brokeParts[i];
if(go.transform.parent == null) continue;
InitializeMeshCollider(go);
DestroyPart(go, true);
}
for(var j : int = 0; j < dp.siblings.length; j++)
{
go = dp.siblings[j];
if(go == null) continue;
if(go.transform.parent == null) continue;
if(go.name.Contains("head"))
{
dead = true;
TrainingStatistics.dummies++;
//audio.PlayOneShot(dieSound);
GunEffects(false);
}
if(go == weapon)
{
canShoot = false;
GunEffects(false);
}
DestroyPart(go, true);
}
GameObject.Instantiate(explosionEffectPrefab, hit.point, Quaternion.identity);
Destroy(dp.gameObject);
}
else
{
canShoot = false;
GunEffects(false);
if(weapon.transform.parent != null)
{
DestroyPart(weapon, true);
}
}
}
}
else
{
if(dp.gameObject != weapon)
{
dp.gameObject.active = false;
for(i = 0; i < dp.brokeParts.length; i++)
{
go = dp.brokeParts[i];
InitializeMeshCollider(go);
DestroyPart(go, true);
}
Destroy(dp.gameObject);
Answer by DaveA · May 10, 2011 at 07:28 PM
What does your TrainingDummyPart script look like? Because the error is saying that it defines a .gameObject member, and so does UnityEngine.Component, and it doesn't know which one you mean to use. You shouldn't need to define a .gameObject member, but if you do, call it something else, would be the easiest thing. Or you can specify UnityEngine.Component.gameObject each time which gets messy.
it looks like this
class TrainingDummyPart extends $$anonymous$$onoBehaviour { @HideInInspector public var name : String;
public var gameObject : GameObject;
//public var boxCollider : BoxCollider;
public var siblings : GameObject[];
//public var siblingParts : TrainingDummyPartHelper[];
public var brokeParts : GameObject[];
public var shootsTaken : int;
public var dummyPart : DummyPart;
function Start()
{
shootsTaken = 0;
}
}
I got ride of the public var GameObject : GameObject and now no more errors thankyou.