error CS1061: Are you missing an assembly reference?

Hello,

The Console is giving the error:

error CS1061: Type UnityEngine.Component' does not contain a definition for attachedRigidbody’ and no extension method attachedRigidbody' of type UnityEngine.Component’ could be found. Are you missing an assembly reference?

Here is the script:

using System;
using UnityEngine;

namespace UnityStandardAssets.Effects
{
    public class WaterHoseParticles : MonoBehaviour
    {
        public static float lastSoundTime;
        public float force = 1;


        private ParticleCollisionEvent[] m_CollisionEvents = new ParticleCollisionEvent[16];
        private ParticleSystem m_ParticleSystem;


        private void Start()
        {
            m_ParticleSystem = GetComponent<ParticleSystem>();
        }


        private void OnParticleCollision(GameObject other)
        {
            int safeLength = m_ParticleSystem.GetSafeCollisionEventSize();

            if (m_CollisionEvents.Length < safeLength)
            {
                m_CollisionEvents = new ParticleCollisionEvent[safeLength];
            }

            int numCollisionEvents = m_ParticleSystem.GetCollisionEvents(other, m_CollisionEvents);
            int i = 0;

            while (i < numCollisionEvents)
            {
                if (Time.time > lastSoundTime + 0.2f)
                {
                    lastSoundTime = Time.time;
                }

                var col = m_CollisionEvents*.colliderComponent;*

if (col.attachedRigidbody != null)
{
Vector3 vel = m_CollisionEvents*.velocity;
_col.attachedRigidbody.AddForce(velforce, ForceMode.Impulse);_

}

other.BroadcastMessage(“Extinguish”, SendMessageOptions.DontRequireReceiver);

i++;
}
}
}
}

attachedRigidbody and attachedRigidbody.AddForce appear red in the script on Mono.
Any ideas how to fix it, maybe how I can provide the missing assembly reference?
Thanks!

@damouss Hi there, and welcome to Unity Answers.

For clarification, attachedRigidBody lives on Collider and not GameObject: Unity - Scripting API: Collider.attachedRigidbody

The issue here is that GameObject does not have any property called attachedRigidbody. In this instance, you’re better off doing other.GetComponent<Rigidbody>() rather than trying to use Collider.attachedRigidBody as this will lead to longer code that (probably) does the exact same thing.

Whenever an error says X does not contain a definition for Y, this means that whatever X is, Y does not exist within it so it can never compile. This is just for future reference.

Hope this helps!

Hi @Matthewj866 I still have that problem and that solution is not fixing it, it comes with following error:

‘Assets/Standard Assets/ParticleSystems/Scripts/WaterHoseParticles.cs(43,15): error CS0019: Operator !=' cannot be applied to operands of type method group’ and null''. And this other error; "Assets/Standard Assets/ParticleSystems/Scripts/WaterHoseParticles.cs(46,12): error CS0119: Expression denotes a method group’, where a variable', value’ or `type’ was expected".
code:

using System;
using UnityEngine;

namespace UnityStandardAssets.Effects
{
	public class WaterHoseParticles : MonoBehaviour
	{
		public static float lastSoundTime;
		public float force = 1;


		private ParticleCollisionEvent[] m_CollisionEvents = new ParticleCollisionEvent[16];
		private ParticleSystem m_ParticleSystem;


		private void Start()
		{
			m_ParticleSystem = GetComponent<ParticleSystem>();
		}


		private void OnParticleCollision(GameObject other)
		{
			int safeLength = m_ParticleSystem.GetSafeCollisionEventSize();

			if (m_CollisionEvents.Length < safeLength)
			{
				m_CollisionEvents = new ParticleCollisionEvent[safeLength];
			}

			int numCollisionEvents = m_ParticleSystem.GetCollisionEvents(other, m_CollisionEvents);
			int i = 0;

			while (i < numCollisionEvents)
			{
				if (Time.time > lastSoundTime + 0.2f)
				{
					lastSoundTime = Time.time;
				}

				var col = m_CollisionEvents*.colliderComponent;*
  •  		if (other.GetComponent<Rigidbody> != null)*
    
  •  		{*
    

Vector3 vel = m_CollisionEvents*.velocity;
_ other.GetComponent.AddForce(velforce, ForceMode.Impulse);_

* }*

* other.BroadcastMessage(“Extinguish”, SendMessageOptions.DontRequireReceiver);*

* i++;*
* }*
* }*
* }*
}

using System;
using UnityEngine;
using System.Collections;

namespace UnityStandardAssets.Effects
{
    public class WaterHoseParticles : MonoBehaviour
    {
        public static float lastSoundTime;
        public float force = 1;
        public Rigidbody attachedRigidbody;

        private ParticleCollisionEvent[] m_CollisionEvents = new ParticleCollisionEvent[16];
        private ParticleSystem m_ParticleSystem;


        private void Start()
        {
            m_ParticleSystem = GetComponent<ParticleSystem>();
        }


        private void OnParticleCollision(GameObject other)
        {
            int safeLength = m_ParticleSystem.GetSafeCollisionEventSize();

            if (m_CollisionEvents.Length < safeLength)
            {
                m_CollisionEvents = new ParticleCollisionEvent[safeLength];
            }

            int numCollisionEvents = m_ParticleSystem.GetCollisionEvents(other, m_CollisionEvents);
            int i = 0;

            while (i < numCollisionEvents)
            {
                if (Time.time > lastSoundTime + 0.2f)
                {
                    lastSoundTime = Time.time;
                }

                var Collider = m_CollisionEvents*.colliderComponent;*

if (GetComponent().attachedRigidbody != null)
{
Vector3 vel = m_CollisionEvents*.velocity;
_GetComponent().attachedRigidbody.AddForce(velforce, ForceMode.Impulse);_

}

other.BroadcastMessage(“Extinguish”, SendMessageOptions.DontRequireReceiver);

i++;
}
}
}
}

Change:
var col = m_CollisionEvents[i].colliderComponent;
To this:
var col = m_CollisionEvents[i].colliderComponent as Collider;